我如何强制在 git pull 上覆盖本地文件 ? 我的本地仓库包含一个与服务器相同的文件名文件 。

错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖


当前回答

这将删除所有未承诺的更改, 然后拉动 :

git reset --hard HEAD
git pull

其他回答

我认为答案是可怕的。但尽管刺绣猪的答案可能更好, 但我并不认为它是多么的优雅。 我发现这样做的方式是使用获取和合并 与定义的战略。 这样应该可以保存你的本地变化, 只要它们不是你试图强迫覆盖的文件之一。

首做您更改中的一次承诺

 git add *
 git commit -a -m "local file server commit message"

然后在发生冲突时获取更改并覆盖

 git fetch origin master
 git merge -s recursive -X theirs origin/master

- x 是一个选项名称, 而它们就是该选项的价值。 您选择使用它们的更改( 另一个选项是我们的更改) , 如果有冲突 。

一旦您进行了 Git 拖动, 您就会得到不匹配的文件列表。 如果文件数量不大, 那么您就可以检查这些文件, 此动作将会覆盖这些文件 。

git 检出 - & lt; filename & gt;

i 通常会这样做,如果为了快速检查我修改服务器上的本地文件(没有推荐的和在您得到这个问题:d背后的大致原因), i 在找到解决方案后检查已修改的文件。

对于那些不喜欢重置的人,我喜欢这样的做法:


git checkout branchname      # go to your branch
git fetch origin branchname  # fetch the remote
git checkout -b backup       # optionally, mark your remote as a backup
git branch -f branchname origin/branchname # force your local branch to be equal to the fetched origin/branchname


在窗口上执行此单命令 :

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

这里的答案似乎大多集中在主分支上; 但是,有时我在两个不同的地方 研究同一个功能分支, 我希望一个在另一个在重新基点上得到反映, 而不是跳过很多圈子。

根据Rna的回答和Torek对类似问题的回答, 我得出了一个非常有效的答案:

git fetch
git reset --hard @{u}

从一个分支运行它, 它只会重新设置你的地方分支 到上游版本。

也可以将它写进别名(git strengpull)中:

git 配置别名.forcepull "! git 获取; git 重设 - hard u}"

或者,在您的. git config 文件 :

[alias]
  forcepull = "!git fetch ; git reset --hard @{u}"

享受吧!