我描述了SourceTree所看到的配方和顯示存儲庫狀態的屏幕截圖(因爲它一次顯示所有分支)。請注意,分支是'au','ga'和'master',而不是配方中使用的GPT-99_description_AU,GPT-99_description_GA和GPT-99_description。
(你可能會問,爲什麼有一個額外的線路和每個代碼塊之前的一段 - 我能拿它來格式化今天的唯一途徑)
- 創建3個分支。他們應該反映正在進行的問題,併爲AuScope和GA提供一個問題。我們還需要一個合併成
。
$ git checkout master # or whatever base branch we will be using
$ git branch GPT-99_description
$ git branch GPT-99_description_AU
$ git branch GPT-99_description_GA
- 在GA分支
完成所有的工作。
$ git checkout GPT-99_description_GA
- 執行編輯,添加文件,並根據需要
- 刪除文件確定會去澳大利亞,因爲他們必須單獨提交的文件(否則怎麼會送我們只是那些提交到AUS?)
- 提交AUS文件。使用標識爲AUS文件提交的內容開始提交消息
。
$ git add <files>
$ git commit -m "GPT-99 - AUS files - ..."
也許不是使用消息使用標記。稍後再看。
- 提交GA文件。不需要識別消息。
。
$ git add <files>
$ git commit -m "GPT-99 - ..."
- 切換到AuScope分支
。
Switch to the AuScope branch
- 櫻桃挑AuScope提交(查看日誌)
。
$ git cherry-pick SHA#1
$ git cherry-pick SHA#2
...
- 現在是什麼在這裏發生的是,提交已被複制,並且將存在於GA的AUS分支機構。提交是獨立的(它們有不同的SHA),但它們的實質是相同的 - 如果兩者都重播,將會有衝突,因爲兩者都會嘗試添加/刪除/編輯同一事物。我們可以使用https://git-scm.com/book/en/v2/Git-Branching-Rebasing#Rebase-When-You-Rebase中描述的git技巧,其中複製的提交將具有用於標識提交相同的補丁標識。這允許我們rebase和git將解析不同的提交只是一個
。
$ git rebase --onto GPT-99_description GPT-99_description_AU GPT-99_description_GA
- 重複的提交現在鞏固。然而GA分支沒有AUS變化。爲了做到這一點,我們合併:
。
$ git checkout GPT-99_description_GA
$ git merge GPT-99_description_AU
- 現在的庫是在所有的變化都在GA分支的狀態和旨在改變發送一個拉請求AuScope都在AU分支。