1
我正在使用bitbucket,並且遇到了使用git的rebase特性的問題。簡而言之,我需要重新應用每次重新綁定時我已經應用的更改。我使用下面的步驟重新創建了該問題。它是一個簡化版本,但結果是一樣的。如何正確使用git工作流與rebase?
- 開發人員A創建一個git repo並將
contributors.txt
添加到master
,提交和推送。現在master
有一個contributors.txt
文件。該文件的內容是Developer A
- 開發人員A從
master
創建branch-a
。 - 開發者B從
master
創建branch-b
。 - 開發者A將貢獻者文件追加到
branch-a
中,看起來像。Developer A Developer A2
- 開發人員B追加貢獻者文件
branch-b
所以它看起來像Developer A Developer B
- 開發一個承諾,並推動改變遠程
branch-a
- 開發人員B提交和推動修改遠程
branch-b
。 - 開發人員A合併
branch-a
與master
。 - 開發人員B簽出主服務器並進行提取,以便本地主服務器根據上述步驟8中提到的合併所應用的更改進行更新。
- 開發者B簽出
branch-b
並且git rebase master
- 開發者B得到合併衝突。
- 開發人員B修復合併衝突,因此文件現在看起來像
Developer A Developer A2 Developer B
- 開發人員B確實
git add
添加固定衝突並運行git rebase --continue
。一切順利。 - 開發商B拉
branch-b
由於現在本地和遠程branch-b
分歧,他們需要合併。 (需要在拉前設置上游) - 開發人員B解決合併衝突,現在本地
branch-b
已經從主服務器進行更改並可以推送到遠程。 - 開發者B將
branch-b
推送到遠程。使用git push origin branch-b
。一切順利。 - 開發者B在
branch-b
中創建一個新文件並提交。 - 顯影劑B然後確實
git checkout master
git pull
(主是最新的,因爲它沒有自上次拉即步驟改變9)git checkout branch-b
git rebase master
- 當
git rebase master
被執行,git要求開發者B再次解決相同的衝突。爲什麼會發生?是否應該不知道已經應用的更改,而不要求再次應用?
我想我可以使用合併而不是rebase來克服這個問題。但是好像我錯誤地使用了rebase。請讓我知道我在做什麼錯了
我理解這個解決方案。但在這個問題上我不清楚。一旦我成功完成第13步,是不是將原產地/分支-B重新設置在主設備上? – ysfiqbl
您當地的分支機構b已經重新設計,但原產地/分支機構b並沒有因爲沒有任何推出後被推動。這就是爲什麼當你推動時仍然存在合併衝突。 當您強制推送時,它會用重定版本替換原點/分支b。 –
明白了,謝謝。它現在非常有意義。有沒有另一個工作流程,我應該遵循而不是這個?我猜如果我想用rebase這是做到這一點的方法。 – ysfiqbl