簡體   English   中英

git rebase-如何接受所​​有合並沖突的遠程分支?

[英]Git rebase - how do I accept remote branch for all merge conflicts?

我正在使用git 1.7.1使用my_branch_1,並且正在嘗試從master恢復基准。 我在directory_1中有一些自己的更改。

當我嘗試:

git rebase master

從我的分支機構中,我從directory_2中的文件中收到大量合並沖突(超過200個)。 這些沖突如何到達那里,我不知道。 我也沒有辦法知道應該如何糾正沖突,因為它們都在我從未打開過且一無所知的文件中。

理想情況下,我希望能夠告訴git:“嘿git-如果您在directory_2中遇到合並沖突,只需從master那里獲取文件,不要問我有關修復的問題”。

在這一點上,我什至可以接受master來處理所有合並沖突,因為我的大部分工作都是使用新文件。 如何通過使用master文件自動告訴git重新設置基准並解決所有沖突?

您可以做的是git merge master 這將產生合並沖突。 然后,您可以使用一點外殼魔術來完成其余工作: git diff --name-only --diff-filter=U 該命令將列出所有有沖突的文件。 所以你可以做類似的事情

$ git merge master
$ git diff --name-only --diff-filter=U | grep ^path/to/directory_2 | xargs -I% sh -c 'git checkout -f HEAD -- % && git add %'

然后您可以完成合並

或者你可以用其他方式

$ git diff --name-only --diff-filter=U | grep ^path/to/directory_2 | xargs -I sh -c 'git checkout -f master -- % && git add %'

第一次做ours的目錄directory_2 ,第二個做theirs的目錄directory_2

該腳本的作用是獲取所有未解決的沖突,使用grep過濾,以便列表中僅包含directory_2中的沖突,然后使用xargs運行命令git checkout -f <branch: Either HEAD or master> -- <file> && git add <file>為列表中的每個文件git checkout -f <branch: Either HEAD or master> -- <file> && git add <file>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM