GIT 基本概念(分支, 差異, 合併)

2021-07-12 07:35:04 字數 2187 閱讀 8036

分支的命名規則:

可以使用 / 建立乙個分層的命名方案,但是分支名不能以 / 結尾。不能以 - 開頭。不能寫成類似 feature/.features1(含.)的分支名。不能用連續兩個點..。不能包含空格和特殊含義的字元。

每個分支在乙個特定的版本庫中必須有唯一的名字,這個名字始終指向該分支上最近提交的版本。

建立乙個分支:git branch [new_branch_name],如果沒有starting-commit 引數跟在分支名後面,則預設是在你現在工作的分支上啟動乙個新的分支。如果加上starting-commit, 例如:git branch new_branch db7de5fee.. (db7de5fee..是乙個提交id),則說明該分支基於指定的提交版本之上。

列出本地分支名:git branch, 列出所有分支名:git branch-a(包括遠端分支),-r:列出遠端分支名。

檢視分支:git show-branch 命令提供比git branch更詳細的輸出。

檢出分支:git checkout [branch_name], 有未提交的更改時進行檢出時,需要先add當前分支的更改檔案或目錄,然後commit(如果乙個檔案的本地修改不同於新分支上的變更,checkout的時候會報錯。當然可以通過-f 強制checkout,但是這種做法會使得當前branch的更改內容丟失。)【這裡如果是checkout到master上,或者是從master上checkout到別的branch上,那麼不會報錯,只會標記為m】

在工作分支上檢視其它分支上的檔案,可以通過git show [other_branch]:[file_name],例如:git show wayne_test_0606: hello.txt。

刪除本地分支:git branch -d [branch_name], git 不會讓你刪除當前分支,也不會讓你刪除乙個 某個提交只包含在要被刪除的分支,也就是說git防止你在不合併到當前分支的分支被刪除時,不小心丟失其內容。

刪除遠端分支:git push origin --delete [branch_name],或者git push origin :[branch_name]

差異(diff)

其實 git diff 和 unix diff差不多,diff -u [init_file] [final_file] //逐行比較兩個檔案內容的差異,-u選項表示產生乙個合併格式的差異。---:原始檔案,+++:最新檔案;@@之間表示兩個不同檔案版本的上下文行號:-:第乙個檔案,1表示第一行,4表示連續四行,+:第二個檔案;以(-)開頭的行表示從原始檔案刪除該行以得到新檔案,(+)開始的行表示從原始檔案中新增該行以產生新檔案。

git diff 命令

(1)git diff:顯示工作目錄和索引之間的差異

(2)git diff [commit]:顯示工作目錄和給定提交之間的差異

(3)git diff --cached [commit]:顯示索引中的變更和給定提交之間的差異

(4)git diff [commit1] [commit2]:顯示給定的兩個提交之間的差異。

命令列選項:--m:查詢重新命名並且生成乙個簡化的輸出。-w/--ignore-all-space:忽略空白字元。--stat:顯示針對兩個樹狀態之間差異的統計資料,報告用簡潔的語法顯示有多少行發生了變化,多少行新增了,多少行刪除了。--color:輸出結果以多種顏色顯示。

合併 (merge)

合併兩個分支流程:在master上合併乙個分支

git checkout master

git merge [another_branch]

git log --graph --pretty=oneline --abbrev-commit // git log --graph可以圖形化描述。

如果發生衝突,(1)使用git diff,可以看到衝突檔案之間的差異,然後解決衝突。(2)使用 git log --merge --left-right -p,通過日誌來檢視衝突。// --merge: 只顯示跟產生衝突的檔案相關的提交, --left-right:左邊顯示<,自己的branch一邊,右邊顯示》,要合併的branch一邊。-p:顯示提交資訊和每個提交的相關補丁。

終止或重新啟動合併:

在執行git merge 命令執行之前放棄,可以使用git reset --hard head//恢復到當前最新的提交。【注】head相當於游標。

在執行git merge 命令之後放棄,可以使用 git reset --hard orig_head //恢復到上乙個提交。

git對比分支差異

git log dev master同理檢視 master 中有,而 dev 中沒有的內容 git log master.dev注意,列出來的是兩個點後邊 此處即dev 多提交的內容。同理,想知道 master 比 dev 多提交了什麼 注意 commit 後面的箭頭,根據我們在 left righ...

git 對比兩個分支差異

文章 git log dev master 同理檢視 master 中有,而 dev 中沒有的內容 git log 注意,列出來的是兩個點後邊 此處即dev 多提交的內容。同理,想知道 master 比 dev 多提交了什麼 git log 注意 commit 後面的箭頭,根據我們在 left ri...

git 對比兩個分支差異

git 對比兩個分支差異 git log dev master同理,檢視master有,而dev沒有的寫法如下 git log master devgit master.dev注意 列出來的內容是兩個 後面的內容 上面命令中是dev 多提交的內容。注意 commit 後面的箭頭,根據我們在 left...