国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

3.2 分支的新建與合并

2018-02-24 15:22 更新

分支的新建與合并

讓我們來看一個簡單的分支新建與分支合并的例子,實際工作中你可能會用到類似的工作流。你將經歷如下步驟:

  1. 開發(fā)某個網站。

  2. 為實現(xiàn)某個新的需求,創(chuàng)建一個分支。

  3. 在這個分支上開展工作。

正在此時,你突然接到一個電話說有個很嚴重的問題需要緊急修補。你將按照如下方式來處理:

  1. 切換到你的線上分支(production branch)。

  2. 為這個緊急任務新建一個分支,并在其中修復它。

  3. 在測試通過之后,切換回線上分支,然后合并這個修補分支,最后將改動推送到線上分支。

  4. 切換回你最初工作的分支上,繼續(xù)工作。

新建分支

首先,我們假設你正在你的項目上工作,并且已經有一些提交。

master 分支所指向的提交是你當前提交(有關 hotfix 的提交)的直接上游,所以 Git 只是簡單的將指針向前移動。換句話說,當你試圖合并兩個分支時,如果順著一個分支走下去能夠到達另一個分支,那么 Git 在合并兩者的時候,只會簡單的將指針向前推進(指針右移),因為這種情況下的合并操作沒有需要解決的分歧——這就叫做 “快進(fast-forward)”。

現(xiàn)在,最新的修改已經在 master 分支所指向的提交快照中,你可以著手發(fā)布該修復了。

任何因包含合并沖突而有待解決的文件,都會以未合并狀態(tài)標識出來。Git 會在有沖突的文件中加入標準的沖突解決標記,這樣你可以打開這些包含沖突的文件然后手動解決沖突。出現(xiàn)沖突的文件會包含一些特殊區(qū)段,看起來像下面這個樣子:

<<<<<<< HEAD:index.html
<div id="footer">contact : email.support@github.com</div>
=======
<div id="footer">
 please contact us at support@github.com
</div>
>>>>>>> iss53:index.html

這表示 HEAD 所指示的版本(也就是你的 master 分支所在的位置,因為你在運行 merge 命令的時候已經檢出到了這個分支)在這個區(qū)段的上半部分(======= 的上半部分),而 iss53 分支所指示的版本在 ======= 的下半部分。為了解決沖突,你必須選擇使用由 ======= 分割的兩部分中的一個,或者你也可以自行合并這些內容。例如,你可以通過把這段內容換成下面的樣子來解決沖突:

<div id="footer">
please contact us at email.support@github.com
</div>

上述的沖突解決方案僅保留了其中一個分支的修改,并且 <<<<<<< , ======= , 和 >>>>>>> 這些行被完全刪除了。在你解決了所有文件里的沖突之后,對每個文件使用 git add 命令來將其標記為沖突已解決。一旦暫存這些原本有沖突的文件,Git 就會將它們標記為沖突已解決。

如果你想使用圖形化工具來解決沖突,你可以運行 git mergetool,該命令會為你啟動一個合適的可視化合并工具,并帶領你一步一步解決這些沖突:

$ git mergetool

This message is displayed because 'merge.tool' is not configured.
See 'git mergetool --tool-help' or 'git help config' for more details.
'git mergetool' will now attempt to use one of the following tools:
opendiff kdiff3 tkdiff xxdiff meld tortoisemerge gvimdiff diffuse diffmerge ecmerge p4merge araxis bc3 codecompare vimdiff emerge
Merging:
index.html

Normal merge conflict for 'index.html':
  {local}: modified file
  {remote}: modified file
Hit return to start merge resolution tool (opendiff):

如果你想使用除默認工具(在這里 Git 使用 opendiff 做為默認的合并工具,因為作者在 Mac 上運行該程序)外的其他合并工具,你可以在 “下列工具中(one of the following tools)” 這句后面看到所有支持的合并工具。然后輸入你喜歡的工具名字就可以了。

如果你需要更加高級的工具來解決復雜的合并沖突,我們會在 “高級合并” 介紹更多關于分支合并的內容。

等你退出合并工具之后,Git 會詢問剛才的合并是否成功。如果你回答是,Git 會暫存那些文件以表明沖突已解決:你可以再次運行 git status 來確認所有的合并沖突都已被解決:

$ git status
On branch master
All conflicts fixed but you are still merging.
  (use "git commit" to conclude merge)

Changes to be committed:

    modified:   index.html

如果你對結果感到滿意,并且確定之前有沖突的的文件都已經暫存了,這時你可以輸入 git commit 來完成合并提交。默認情況下提交信息看起來像下面這個樣子:

Merge branch 'iss53'

Conflicts:
    index.html
#
# It looks like you may be committing a merge.
# If this is not correct, please remove the file
#   .git/MERGE_HEAD
# and try again.

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# All conflicts fixed but you are still merging.
#
# Changes to be committed:
#   modified:   index.html
#

如果你覺得上述的信息不夠充分,不能完全體現(xiàn)分支合并的過程,你可以修改上述信息,添加一些細節(jié)給未來檢視這個合并的讀者一些幫助,告訴他們你是如何解決合并沖突的,以及理由是什么。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號