1. git是分布式版本控制系統,相對的,cvs、svn都是集中式的版本控制系統;
2. git安裝(linux)
1) 使用
$ git
檢視當前系統是否安裝了git;
2) 如果當前系統還沒有安裝git,在debian或unbuntu下,可以使用命令
$ sudo apt-get install git
完成git的安裝;
$ ./config$ make
$ sudo make install
4) 安裝完成後,進行設定,在命令列輸入:
$ git config --global user.name 「your name」$ git config --global user.email [email protected]
注:使用git config命令的–global引數之後,表示當前機器上所有的git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的username和email位址;
3. 建立版本庫
1) 選擇乙個合適的地方,建立乙個空目錄;
$ mkdir directory-name$ cd directory-name
$ pwd
pwd命令用於檢視當前目錄;
2) 使用
$ git init
命令把該目錄變成git可以管理的倉庫:
4. 使用
$ git status
命令檢視當前倉庫的狀態;
5. 使用$ diff file-name檢視當前版本檔案和遠端倉庫版本的區別;
使用
$ git diff head -- file-name
檢視工作區和版本庫里最新版本的區別;
6. 版本回退
1) 使用
$ git log
檢視歷史記錄;
2) 使用
$ git log --pretty=oneline
檢視簡單歷史記錄;
3) 使用
$ git reset --hard head^
回退到最近的上乙個版本;
4) 使用
$ cat file-name
檢視檔案內容;
5) 假定有歷史版本,其版本號的前幾位為123456,使用
$ git reset --hard 123456
退回到該版本號標識的版本;
6) 使用
$ git reflog
命令檢視命令歷史列表;
7. 關於git的版本回退
git的版本回退速度非常快,因為git在內部有個指向當前版本的head指標,當執行版本回退操作時,git僅僅是把該指標的指向改變而已;
8. 工作區和暫存區
工作區(working directory): 當前操作的檔案所在的目錄就是乙個工作區;
版本庫(repository): 工作區有乙個隱藏目錄」git」,該目錄不是工作區,而是git的版本庫,該目錄下儲存了成為stage(或者成為index)的暫存區,還有git為該倉庫工作而自動建立的第乙個分支master,以及指向master的指標head;
9. git新增檔案的步驟
1) 使用
$ git add file-name
把檔案修改新增到暫存區;
2) 使用
$ git commit –m 『comment』
把暫存區的所有內容提交到當前分支;
注: 對於每次修改,如果不把該次修改新增到暫存區,就不會被加入到commit裡面;
10. git跟蹤管理的物件是修改,而不是檔案;
11. 撤消修改
1) 當錯誤修改了工作區某個檔案的內容,想直接丟棄工作區的修改時,用命令
$ git checkout -- file-name
完成操作;
2) 不僅錯誤修改了工作區某個檔案的內容,而且還將該修改新增到了暫存區,要丟棄該次修改,第一步使用
$ git reset head file-name
回到步驟1),然後按步驟1)進行操作;
3) 如果已經把不合適的修改提交到了版本庫時,要撤消本次提交,參考6. 版本退回,不過前提是尚未推送到遠端庫;
12. 刪除檔案
1) 直接在檔案管理器中刪除無用檔案,使用命令
$ rm file-name
進行操作;
2) 如果要確實從版本庫中刪除該檔案,使用命令
$ git rm file-name
進行操作;
3) 如果刪除錯了,可以使用版本庫的最新版本進行恢復,使用命令
$ git checkout -- file-name
進行操作;
13. 遠端倉庫
1) 建立ssh key,在使用者主目錄下,如果有.ssh目錄,但該目錄下沒有私鑰檔案id_rsa和公鑰檔案id_rsa.pub兩個檔案,使用shell建立ssh key:
$ ssh-keygen -t rsa -c "[email protected]"
14. 轉殖遠端倉庫
使用命令
$ git clone [email protected]:jiabailie/collections.git
進行操作;
注: git支援多種協議,包括https,但通過ssh支援的原生git協議速度最快;
15. 分支管理
1) 建立並切換分支
使用
$ git checkout -b dev
建立dev分支,並把當前分支切換到dev分支;
上面的一條命令相當於
1 $ git branch dev2 $ git checkout dev
兩條命令的效果;
2) 檢視當前分支,使用
$ git branch
進行操作;
3) 當前dev分支工作並且提交後,切換回master分支,使用
$ git checkout master
進行分支切換;
4) 合併dev分支到master分支,使用命令
$ git merge dev
進行操作,前提是已經切換回master分支;
5) 分支合併後,刪除dev分支,使用命令
$ git branch -d dev
進行操作;
16. 衝突解決
檢視分支合併情況,使用命令
$ git log --graph --pretty=oneline --abbrev-commit
進行操作;
17. 分支管理策略
git預設使用fast forward模式,在該模式下,刪除分支後,會丟棄該分支的資訊;
使用–no-ff引數禁用fast forward方式的merge,禁用後,git會在merge時生成乙個新的commit,由此從該分支歷史上可以看出分支資訊,
使用命令
$ git merge --no-ff -m 'merge with no-ff' dev
完成操作;
18. bug分支
1) 使用stash功能可以把當前的工作現場儲存起來,等以後恢復現場後繼續工作,使用
$ git stash
命令完成操作;
2) 使用
$ stash list
命令檢視儲存的工作現場列表;
3) 有兩種辦法用來恢復現場:
第一種是使用
恢復現場,恢復後stash的內容不會刪掉,需要使用
$ git stash drop
命令進行刪除操作,使用時先使用
$ git stash list
檢視stash列表,然後恢復指定的stash,例如
第二種是使用
$ git stash pop
恢復現場,恢復現場的同時也會把stash的內容刪除;
19. 強行刪除指定分支,使用命令
$ git branch -d branch-name
進行操作;
20. 多人協作
1) 檢視遠端庫資訊,使用命令
$ git remote
進行操作;
如果要檢視詳細,使用命令
$ git remote -v
進行操作;
2) 建立遠端origin下dev分支的本地dev分支,使用命令
$ git checkout -b dev origin/dev
進行操作;
3) 設定本地dev分支和遠端origin/dev分支的鏈結,用於git pull操作,使用命令
$ git branch --set-upstream dev origin/dev
進行操作。
來自為知筆記(wiz)
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 版...