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

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


当前回答

在 Windows 上执行此单命令 :

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

其他回答

我刚刚解决了这个问题 自己:

git checkout -b tmp # "tmp" or pick a better name for your local changes branch
git add -A
git commit -m 'tmp'
git pull
git checkout master # Or whatever branch you were on originally
git pull
git diff tmp

最后一个命令给出您本地更改的列表。 继续修改“ tmp” 分支, 直至它可以接受, 然后将它合并为母版 :

git checkout master && git merge tmp

下次,你也许可以用更干净的方式处理这件事, 找到"Git 藏宝分支",虽然藏宝在最初的几例尝试中 可能会给你带来麻烦, 所以首先试验一个非关键项目...

警告: 警告:git clean删除所有未跟踪的文件/目录,无法撤销。


有时只是偶尔clean -f如果您有未跟踪的主管, -d 选项也需要 :

# WARNING: this can't be undone!

git reset --hard HEAD
git clean -f -d
git pull

警告: 警告:git clean删除所有未跟踪的文件/目录,无法撤销。

考虑使用-n (--dry-run) 旗号先行。这将显示要删除的内容,但实际上没有删除任何内容:

git clean -n -f -d

示例产出:

Would remove untracked-file-1.txt
Would remove untracked-file-2.txt
Would remove untracked/folder
...

不要用git reset --hard这将抹去他们完全不可取的变化,相反:

git pull
git reset origin/master
git checkout <file1> <file2> ...

您当然可以使用git fetch代替git pull因为它显然不会合并, 但如果你通常拉它, 继续拉在这里是有道理的。

所以这里发生的事情就是git pull 更新您的源/ 主管参考; git reset 更新本地分支引用与来源/主管相同,不更新任何文件,所以您的检查状态没有变化;git checkout 将文件返回到您的本地分支索引状态需要时。如果在现场和上游主控上添加了完全相同的文件,索引已经与重置之后的文件匹配,因此在普通情况下,不需要做git checkout完全没有

如果上游分支也包含您想要自动应用的承诺,您可以跟踪进程上微妙的变异:

git pull
git merge <commit before problem commit>
git reset <problem commit>
git checkout <file1> <file2> ...
git pull

1: 重置为上一个承诺

git reset --hard HEAD

2: 删除未跟踪文件

git clean -f

3: 作出承诺

git pull

资料来源:

我读了所有的答案,但我正在寻找一个命令来做到这一点。这是我所做的。在.gitconfig中添加了一个Git 化名。

[alias]
      fp = "!f(){ git fetch ${1} ${2} && git reset --hard ${1}/${2};};f"

将命令运行为

git fp origin master

等于

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