如何使用git pull覆盖已有更改

3

我在使用Git时遇到了覆盖远程仓库更改的问题

  1. 我在主分支上,通过执行git status命令,发现有1个修改后的文件。
  2. 现在我想使用git pull命令,以便所有当前修改都被来自主分支的拉取所覆盖。

我尝试过以下命令:

git pull -Xtheirs

最后出现错误,提示xxxx文件已经被修改,要么提交这些更改,要么将它们存储下来。然后它退出,并显示abort

为了解决问题,我不得不存储这些修改,然后再次执行git pull命令才能使其正常工作。

有没有不用存储就可以解决该问题的方法呢?

2个回答

3
你遇到的情况是 git merge(由 git pull 调用)仅适用于 提交,而不适用于未提交的更改。要保留你的未提交更改,需要先提交或储藏。实际上你有三个选择:
  1. Commit your change.

    git add modified-file.txt; git commit
    
  2. Stash your change (presumably with the intent of unstashing it later).

    git stash save "my uncommitted change"
    
  3. Throw away your changes to that file:

    git checkout the-modified-file.txt
    

如果您想丢弃所有未提交的更改,只需执行 git stash 即可。 - SparrowG
SparrowG - git stash 不会丢弃未提交的更改。 - Paul Beckingham

3
你可以尝试:

git reset --hard HEAD (will throw away uncommitted changes)
git clean -f -d
git pull

如果您有未跟踪的文件和目录,clean是可选的。

git reset --hard HEAD && git clean -f -d && git pull (in one cmd)

这样的建议应该附带一个警告,即 git reset --hard 命令会丢弃未提交的更改。而 git clean 则会丢弃未被 Git 跟踪的文件。 - Greg Hewgill
1
谢谢,我会添加警告,但这是问题的要求。 - Raunak Kathuria

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接