我知道这里已经发布了一个非常相似的问题:
Updating a local repository with changes from a github repository
然而,该页面没有回答我的问题。本质上,我用一些新文件更新了我的GitHub仓库,并在机器上编辑了一些旧的仓库。现在,我在另一台机器上有一个旧版本。如何更新旧版本?
这是我的错误消息。我跑了sudo git pull origin master
。
error: Your local changes to the following files would be overwritten by merge:
test.py
Please commit your changes or stash them before you merge.
error: The following untracked working tree files would be overwritten by merge:
README.txt
Please move or remove them before you merge.
Aborting
然后我跑了
git commit -m "idk this is old but i have to commit n e way even though i just want to update from master?"
因为我本来应该做出改变或者“隐藏”我尚未学到的东西。另外,我不知道如何处理README.txt,所以我现在就离开了。
[master 16b204e] idk this is old but i have to commit n e way even though i just want to update from master?
3 files changed, 11 insertions(+), 3 deletions(-)
create mode 100644 README
create mode 100644 README.txt
我跑了
sudo git pull origin master
但我收到了这个错误:
From https://github.com/bobhob314/fright-before-christmas-clone
* branch master -> FETCH_HEAD
Auto-merging test.py
CONFLICT (content): Merge conflict in test.py
Automatic merge failed; fix conflicts and then commit the result.
我想知道为什么会这样。这有可能吗?我不记得这是不是发生了什么。
我并不完全了解git的引擎盖机制,所以请帮我弄清楚出了什么问题。
谢谢!
答案 0 :(得分:3)
你有一个所谓的“合并冲突”
基本上,你有一个文件已被2种不同的来源以2种不同的方式修改过,而Github不知道你想要的版本是哪个文件,因为它们之间的变化是相互冲突的。
根据您所描述的内容,您的“版本2 ”和“版本3 ”两者更改了相同的行test.py
,现在Github不确定要使用哪个版本。
解决此问题的方法是进入受影响的文件(在本例中为test.py
)并修复冲突。你会看到类似的东西:
>>>>>>>>>>> HEAD
<code that's on the server (version 2)>
======
<code that you modified locally (version 3)>
<<<<<<<<<<< [commit hash]
修复后,您可以创建合并提交并将其重新启动
@TimeSheep在how to resolve merge conflicts上发布了指向一个很好的问题的链接,其中说明您可以安装/使用mergetool
等工具来帮助您解决这些冲突
答案 1 :(得分:2)
合并问题,我讨厌他们......
快捷方式:您将覆盖最旧的代码计算机中的本地更改。
git fetch --all
git reset --hard origin/master
这都是老兄!
答案 2 :(得分:1)
你是正确的,因为第3步导致错误。这是一个合并冲突,这意味着git不知道如何生成包含版本2和版本3中的更改的文件。
您需要做的是解决此冲突。有几个很棒的工具可以帮助你做到这一点。我建议调查GitKraken(冲突处理是付费功能,学生免费),KDiff或P4Merge(适用于Perforce Helix,但也支持git)。您可能已经安装了一个好工具,在这种情况下,只需运行git mergetool
即可开始解决冲突。
您也可以使用简单的文本编辑器解决冲突,如另一个答案中所建议的那样,但是如果您做了很多更改,那么使用GUI来完成这项工作会有很大的帮助。
如果您想了解有关解决合并冲突的更多信息,建议您查看以下问题:How to resolve merge conflicts in Git?