我有兩個分支,「私人」和「公共」。我在私人和定期工作,我想要替換「公共」分支中的所有內容,以便在「私人」中擁有乾淨的文件副本。Git合併:取自「他們」的分支
由於我不希望「私人」的歷史轉到「公開」,我使用git merge --squash
,但我仍然手動地逐個解決合併文件。有一個更好的方法嗎?
我有兩個分支,「私人」和「公共」。我在私人和定期工作,我想要替換「公共」分支中的所有內容,以便在「私人」中擁有乾淨的文件副本。Git合併:取自「他們」的分支
由於我不希望「私人」的歷史轉到「公開」,我使用git merge --squash
,但我仍然手動地逐個解決合併文件。有一個更好的方法嗎?
如果在提交的兩個文件中相同的行已更改,壓縮合並不會改變存在衝突的事實。
完全拋棄一切一個「公共」分支和接管的「公共」的確切狀態,您可以執行下列操作之一:
使用ours
合併策略(而不是策略選項)在其他幾個提交指出:
1.A假設你是在分支 「私有」(否則,做git checkout private
)
1.B git merge -s ours public
1.C git checkout public
1.D git merge --ff-only private
1.e (可選:兩個分支現在都指向合併提交;如果你想「私人」指向合併之前提交,做:)git checkout private; git reset --hard [email protected]{1}
(注意,這裏使用了引用日誌,只會像這樣的工作,如果你還沒有在此期間改變了「私人」)
檢查手動輸出「他們的」一面:
2.a假設您在分支「public」(否則爲git checkout public
)
2.b git merge --no-commit private
將準備合併提交,但在提交之前停止,無論合併是否存在合併是否衝突
2.c git checkout -f private -- .
查看「私密」的當前狀態
2.d git add .
將衝突標記爲已解決(如有)
2.e git commit
保存合併提交; 「公共」現在有完全相同的內容爲「私有」
編輯:需要注意的是這個的How do I 'overwrite', rather than 'merge', a branch on another branch in Git?
編輯2倒的情況:如果要隱藏你的單公衆提交,您可以在這裏使用--squash
開關太多,當然(步驟1.B 2.B和分別)
我覺得
git merge -X theirs private
是你在找什麼。當然,你可以隨意追加--squash
。
可能的重複(或者,可能的答案):http://stackoverflow.com/questions/1922336/how-to-merge-a-branch-into-another-with-override-option-in-git –
似乎有類似的問題,但答案是錯誤的。 「我們的」實際上是相反的,放棄私人和公開。我想要的是--strategy =「他們的」,但這不是合法的選擇。 –
[git merge -s我們的可能重複,那麼他們的「]」(http:// stackoverflow。COM /問題/ 173919 /混帳合併-S-我們 - 什麼 - 關於 - 他們) – 2014-04-12 02:40:29