以前總結的一些git操作,分享在這里.
Git 保存的不是文件差異或者變化量,而只是一系列文件快照。
git diff tmp
git merge tmp
上述命令其實相當於git fetch 和 git merge在實際使用中,git fetch更安全一些因為在merge前,我們可以查看更新情況,然后再決定是否合並
serverfix
的分支需要和他人一起開發,可以運行
git push (遠程倉庫名) (分支名)
:
serverfix
分支名擴展為
refs/heads/serverfix:refs/heads/serverfix
,意為“取出我在本地的 serverfix 分支,推送到遠程倉庫的 serverfix 分支中去”。
git push origin --delete <branchName>
git push origin :<branchName>
git push origin --delete tag <tagname>
git tag -d <tagname> git push origin :refs/tags/<tagname>
git push --tags
更簡單的方法是使用這個命令,它在fetch之后刪除掉沒有與遠程分支對應的本地分支:
git fetch -p
checkout
出來的本地分支,稱為
跟蹤分支
(tracking branch)。跟蹤分支是一種和某個遠程分支有直接聯系的本地分支。在跟蹤分支里輸入
git push
,Git 會自行推斷應該向哪個服務器的哪個分支推送數據。同樣,在這些分支里運行
git pull
會獲取所有遠程索引,並把它們的數據都合並到本地分支中來。
git am *.patch; 如果merge失敗,需要處理沖突
master分支是整個項目的主分支。
所有其他分支都直接或間接源自master。master分支是可直接用於產品發布的代碼。
develop分支反映最新的開發進程。
develop中的代碼總是可以完整build的。當develop中的代碼進入穩定狀態(修復了絕大多數bug)准備release時,所有develop中的更改將通過release branch最終merge到master。
除master和develop以外的分支都是臨時分支。當這些臨時分支完成其使命,就可以刪除它們。我們先看feather分支。
feather分支用於某個新feather的開發,源自develop,並最終merge到develop。
feather分支最終的結局要么合並到develop branch,要么被拋棄。feather分支用如下命令創建:
# git checkout –b my feather develop
完成后將這個feather合並到develop:
# git checkout develop
# git merge --no-ff myfeather
# git branch –d myfeather
# git push origin develop
合並時--no-ff選項避免fast forward。使用該選項和不使用該選項得到的分支路線圖分別如下:
release分支用於准備新版本的發布。源自develop,merge到develop和master。
release分支僅修復小的bug,完成准備版本號,build date等工作。而develop分支可以同時開始新feather的開發。該分支上修復的bug需要merge到develop,並在該分支完成時merge到master。此時需要給master打上tag,標記這個新的release。
Hotfix分支用於緊急bug修復,源自master,merge到develop和master。
對於已發布的產品,可能有意外的緊急bug需要修復。hotfix branch可以避免修復bug的工作影響develop branch。
創建hotfix branch:
# git checkout -b hotfix-x.y master
完成hotfix branch:
# git checkout master
# git merge --no-ff hotfix-x.y
# git tag –a x.y.z
# git checkout develop
# git merge --no-ff hotfix-x.y
# git branch –d hotfix-x.y
這里有個例外就是,如果hotfix發生時有正在進行的release branch,那么將hotfix merge到release,而release最終會merge到develop和master。
