git fetch, merge, pull, push需要注意的地方(轉)


在git操作中,我們經常會用到fetch, merge, pull和push等命令,以下是一些我們需要注意的地方。

給大家准備了參考資料:

1. Whatʼs a Fast Forward Merge?:https://sandofsky.com/images/fast_forward.pdf

2. Understanding the Git Workflow:https://sandofsky.com/blog/git-workflow.html

3. Understanding Git: Merging:http://www.sbf5.com/~cduan/technical/git/git-3.shtml


  1. $ git pull origin test  
  2. // git pull合並代碼的時候,若發生沖突,會處於merging狀態,檢查代碼,發現自己的分支低於主分支,這個時候想撤銷merge  
  3.   
  4. // 撤銷merge  
  5. git reset --hard HEAD (or sha_1) 



git pull = git fetch + git merge

在git倉庫中運行命令:git remote -v

可以看到fetch和push命令可以分別對遠程分支進行fetch和push操作,而pull不是直接跟遠程分支對話的。

fetch同pull的區別在於:git fetch:是從遠程獲取最新版本到本地,不會自動merge   而git pull是從遠程獲取最新版本並merge到本地倉庫   從安全角度出發,git fetch比git pull更安全,因為我們可以先比較本地與遠程的區別后,選擇性的合並。   git push 默認推送到master,如果有多個分支,則多個分支一起推送到遠程

git merge

git merge其實有很多參數的哦,我們來看看merge有哪些參數可以供我們選擇:

git merge -n <branch> 不會在合並后顯示合並前后的不同狀態

git merge –stat <branch> 跟上面的參數相反,它會在合並結束后顯示合並前后的不同狀態

git merge -e <branch> 在合並之前會調用配置的編輯器,您可以自己編寫commit,否則的話commit的內容就是git自動生成的

git merge –no-commit <branch>相當於一次快進式合並,不會生成一次提交,如下圖所示:

git merge –stat <branch> 在合並后會顯示不同的狀態,如下圖紅色框中部分:

git merge –no-stat <branch> 合並后不會顯示不同的狀態,如下圖:

git merge –quiet <branch> 無聲的合並(不會輸出任何信息)

git merge –ff <branch> 當合並是快進式合並的時候,僅僅是更新了分支的指針,不會產生合並提交,這也是默認的合並行為

git merge –no-ff <branch> 及時是快進式合並,也會創建一個合並提交

git merge –ff-only <branch> 只允許快進式合並

快進式合並和非快進式合並

何為快進式合並??

如果當前的分支和另一個分支沒有內容上的差異,就是說當前分支的每一個提交(commit)都已經存在另一個分支里了,git 就會執行一個“快速向前”(fast forward)操作;git 不創建任何新的提交(commit),只是將當前分支指向合並進來的分支。

快進式和非快進式的區別

目前倉庫的狀態是,master分支上有了5次提交,然后基於master創建分支test,並在test上進行3次提交,接下來,我在master分支上對test分支分別進行快進式和非快進式合並。

先進行快進式合並, git merge test (默認為–ff合並),如下圖所示,我們看到一共是5+3=8個提交,分支的提交歷史也沒有“開叉”,即沒有多個父提交節點。

隨后,我回到master的第五次提交,然后對test進行非快進式合並,git merge –no-ff test

這時候,同快進式合並不同的是,在c5處產生了“開叉”,然后新生成了一個commit “Merge branch 'test'”,即多了一個父提交。

現在,大家應該對這兩種合並有了一種直觀的了解了吧。

非快進式合並

非快進式合並會生成新的提交,並“開叉”,可以讓我們的提交歷史更加的清晰!

http://www.cnblogs.com/hutaoer/archive/2013/03/14/3078869.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM