【问题标题】:How do I manage conflicts between local git and github如何管理本地 git 和 github 之间的冲突
【发布时间】:2019-07-05 13:28:07
【问题描述】:

第一次提问。我正在做一个关于 git 的教程,涵盖了服务器上的代码已更新且本地代码已独立更新的实例,因此存在冲突。

在视频中,讲师执行 git pull 并尝试获取文件。对话框获取详细信息,然后说

Auto-merging hello.html

但我的,在那个阶段,说

error: Your local changes to the following files would be overwritten by merge:
        hello.html

在解决冲突之前,我最终无法推送或拉取更改。我最终不得不这样做

git stash
git pull
git stash apply --index

我需要将配置应用到本地 git 以使其尝试自动合并吗?

为了清楚起见

$ git pull
error: Your local changes to the following files would be overwritten by merge:
        hello.html
Please commit your changes or stash them before you merge.
Aborting
Updating 7ed9dbb..0525225

Erik@DESKTOP-TI7OP0E MINGW64 /e/gitrepo/webcourse (master)
$ git commit -m "save"
On branch master
Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
  (use "git pull" to update your local branch)

Changes not staged for commit:
        modified:   hello.html

no changes added to commit

【问题讨论】:

  • 听起来您需要提交一些更改?
  • 自动合并尽力而为,但它也努力不破坏您的本地更改。在这里,它告诉您它不能自动合并,因为这会撤消您的一些工作。提交您的更改,然后合并,此时您将有机会解决冲突。
  • 我遇到的问题是,当我进行拉取时,它不会尝试自动合并。它只是说我的本地更改将丢失并中止。在讲座中,它尝试了自动合并,然后他的本地文件显示了差异。然后他可以选择他想要的版本并进行更新。

标签: git github git-pull


【解决方案1】:

您应该在尝试合并之前提交您的更改。当 Git 尝试执行合并时,它会将结果(包括任何冲突)写入您的工作树。但是,如果您有未提交的更改,这样做会破坏它们,因此 Git 将中止,以免导致您丢失数据。

如果你提交了你的修改并且你的工作树是干净的,那么 Git 知道你有一个保存的工作副本,如果你不喜欢合并的结果或者如果有冲突,你不会丢失数据。

正如您所注意到的,也可以隐藏您的更改并在以后重新应用它们。这也将使您的工作树干净,这将使 Git 高兴。哪个选择是正确的取决于你在做什么。如果您的更改在逻辑上属于您所在的分支,并且您现在可以保留它,那么提交它;如果您希望稍后再处理它或在另一个分支上工作,则将其隐藏起来。

【讨论】:

  • Git 的问题是“你的分支落后于 'origin/master' 1 次提交,并且可以快进。 (使用“git pull”更新您的本地分支)' git pull 失败,因为它要我提交我的更改
  • git pull 确实在这里失败了,但这不是 bk2204 建议做的。事先提交。 (另外,欢迎你:-)
  • 提交也失败了,我已经用 pull 和 commit 命令的输出更新了问题。这是第 22 条规定的情况。在完成拉取之前我无法提交,在完成提交之前我无法拉取。
  • 我的笨蛋。当你说提交时我误解了。我在错误的阶段尝试它。感谢您帮助这个新手:)
猜你喜欢
  • 1970-01-01
  • 2010-10-24
  • 1970-01-01
  • 1970-01-01
  • 2013-11-02
  • 2017-07-14
  • 2022-11-03
  • 1970-01-01
相关资源
最近更新 更多