我如何强制将本地文件覆盖在git pull
我的本地仓库包含一个文件名文件名与服务器上的文件名相同。
错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖
我如何强制将本地文件覆盖在git pull
我的本地仓库包含一个文件名文件名与服务器上的文件名相同。
错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖
当前回答
我用这个命令清除了本地文件, 阻止我进行拉/ 合并。 但是要小心! 运行 !git merge …
首先查看是否只有那些您真的想要删除的文件 。
git merge origin/master 2>&1 >/dev/null | grep ^[[:space:]] | sed s/^[[:space:]]//g | xargs -L1 rm
git merge
列表中列出了所有这些文件。它们是由一些空白空间预设的。2>&1 >/dev/null
将错误输出重定向到标准输出 1 。grep
.grep ^[[:space:]]
只过滤带有文件名称的行。sed s/^[[:space:]]//g
从一开始就调整白空格。xargs -L1 rm
调来电话rm
在每个文件上,删除它们。谨慎地处理:git merge
产出、产出、rm
将呼吁每个以白色空格开始的行 。
其他回答
警告,如果您在 gitignore 文件中有任何目录/ * 条目, 这样做将永久删除您的文件 。
有些答案似乎很可怕。 从发生在Lauri身上的可怕意义来看,
相反(给予 > v1.7.6):
git stash --include-untracked
git pull
稍后,您可以清理藏匿历史。
手动,一对一:
$ git stash list
stash@{0}: WIP on <branch>: ...
stash@{1}: WIP on <branch>: ...
$ git stash drop stash@{0}
$ git stash drop stash@{1}
残酷地说,所有 - 一次:
$ git stash clear
当然,如果你想回到你藏的东西:
$ git stash list
...
$ git stash apply stash@{5}
您可以在您的工程基准文件夹中以文件忽略该文件 :
. jutignore( )
public/images/*
然后拉动修改,然后从您的 gitignore 文件中删除该行 。
您可能会发现此命令有助于丢弃本地更改 :
git checkout <your-branch> -f
然后进行清理(从工作树上移走未追踪的文件) :
git clean -f
如果您想要除去未跟踪的文件之外, 还要删除未跟踪的目录 :
git clean -fd
只是做做
git fetch origin branchname
git checkout -f origin/branchname // This will overwrite ONLY new included files
git checkout branchname
git merge origin/branchname
因此,您可以避免所有不想要的副作用, 比如删除您想要保存的文件或目录, 等等 。
对于那些不喜欢的人reset
我喜欢这个方法:
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