git 學習筆記

2022-10-10 10:24:11 字數 1974 閱讀 4387

分布式版本控制系統

客戶端並不只是提取最新版本的檔案快照,而是把**倉庫完整地映象下來。

git的一些常用指令

git分支

在git中提交,會儲存乙個提交(commit)物件,該物件包含乙個指向快取內容快照的指標,包含本次提交的作者等相關的附屬資訊,包含零個或多個指向該提交物件的父物件指標:首次提交是沒有直接祖先的,普通提交有乙個祖先,由兩個或多個分支合併產生的提交則由多個祖先。

git中的分支,其實本質上僅僅是個指向commit物件的可變指標。git會使用master作為分支的預設名字。在若干次提交後,你其實已經有了乙個指向最後一次提交物件的master分支,它在每次提交時都會自動向前移動。

建立乙個新的分支: git branch [branchname]

建立了乙個新的分支後不會自動切換到這個分支中,需要執行: git checkout [branchname]

也可以將建立新分支和切換到新分支合併成一條指令完成: git checkout -b [branchname]

分支的新建與合併

現在要將hotfix的內容合併到master上來,需要執行:

git checkout master

git merge hotfix

合併時會出現fast forward的提示,由於當前master分支所在的提交物件是要併入的hotfix分支的直接上游,git只需把master分支指標直接右移。這種單線的歷史分支不存在任何需要解決的分歧,所以這種合併過程可以稱為快進。

合併後,可以將hotfix分支刪除: git branch -d hotfix

如果現在要將iss53合併到master分支上:

需要執行:

git checkout master

git merge iss53

由於當前master分支所指向的提交物件(c4)並不是iss53分支的直接祖先,git會用兩個分支的末端(c4和c5)以及他們的共同祖先(c2)進行一次簡單的三方合併計算。

遇到衝突時的分支合併

如果在不同的分支中都修改了同乙個檔案的同乙個部分,git就會無法乾淨地把兩者合在一起。git作了合併,但沒有提交,它會停下來等你解決衝突。要看哪些檔案在合併的時候發生衝突,可以用git status來查閱。

任何包含未解決衝突的檔案都會以未合併(unmerged)的狀態列出。

可以將裡面的內容進行人工修改。在解決所有檔案裡所有衝突後,執行git add將把它們標記為已解決狀態。然後可以用git commit來完成合併提交。

分支的管理

git branch // 給出當前所有分支的清單,分支名字前的*表示當前所在的分支。

若要檢視各個分支最後乙個提交物件的資訊,執行git branch -v。

要從該清單中篩選出你已經(或尚未)與當前分支合併的分支,可以用--merge和--no-merged選項。

Git學習筆記

git stash git stash list 顯示git棧內的所有備份,可以利用這個列表來決定從那個地方恢復。git stash clear 清空git棧。此時使用gitg等圖形化工具會發現,原來stash的哪些節點都消失了。關於git stash的詳細解釋,適用場合,這裡做乙個說明 使用git...

git 學習筆記

1 git checkout master 切換分支 2 git checkout b xx 新建分支,同時切換到該分支 3 dev 4 git add a 將變動檔案,提交到index 5 git commit m 將 暫存區 檔案,加入到版本控制中。6 git checkout master 7...

Git 學習筆記

顯示版本庫.git所在的目錄 git rev parse git dir 顯示工作區的根目錄 git rev parse show toplevel 相對於工作區根目錄的相對目錄 git rev parse show prefix git config 命令各引數的區別 git config e 版...