git - 通过拉动变化解决冲突?

时间:2015-02-09 07:15:38

标签: git merge-conflict-resolution

我正在使用git pull更新我的代码,但在一个文件中出现了提交冲突。我想从pull进行更改并覆盖在本地仓库中执行的操作。是否有一些命令可以简单地从pull进行更改并覆盖本地更改?

或者我是否需要手动编辑此类文件/文件?..

2 个答案:

答案 0 :(得分:0)

试试这个:

git fetch --all
git reset --hard origin/master

P.S。:可能的两面性: Force Git to overwrite local files on pull

答案 1 :(得分:0)

据我了解你的情景:

  • 您在具有遥控器的分支上进行本地更改。
  • 尝试将远程更改拉入本地分支时,您在文件中遇到冲突。
  • 您希望覆盖本地分支上的更改以匹配远程分支中的更改。

简单地说,它是可行的,但如果您失去工作,最好解决冲突

我们无法使用git pull,因为这会执行git fetchgit merge操作,但我们可以做的是移动您的引用本地分支与远程分支的分支相匹配。

为此,我们将使用git fetchgit reset

git fetch && git reset --hard origin/BRANCH

这将抛弃您的本地更改,您的分支现在将与遥控器匹配。我不能强调,如果你这样做,你的本地更改将是一个相当有点的恢复(有通过reflog的方法),所以在你尝试这之前,确保这是你的想做。

听起来您希望保留本地更改,提取最新更改,并在此基础上进行更改。这可以通过git rebase BRANCH来完成。你仍然需要解决冲突,但冲突将在你的历史工作之前发生,使处理起来更容易。

保留原创作品的最后一种方法是存放它。使用git reset --soft HEAD~1将现有的未推送提交移回到暂存状态,然后使用git add . && git stash进行跟进,以便将更改保留在存储中。如果你想将存储应用/弹出到分支,你仍然需要解决冲突,但这样做会更直接。