我如何强制在 git pull 上覆盖本地文件 ? 我的本地仓库包含一个与服务器相同的文件名文件 。
错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖
我如何强制在 git pull 上覆盖本地文件 ? 我的本地仓库包含一个与服务器相同的文件名文件 。
错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖
当前回答
警告,如果您在 gitignore 文件中有任何目录/ * 条目, 这样做将会永久删除您的文件 。
@lauri在 @lauri 遭遇时, 听从David avsajanishvili的建议,
而不是 (git> 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}
其他回答
我所知道的是一个容易和不痛苦的方法:
$ git branch -m [branch_to_force_pull] tmp
$ git fetch
$ git checkout [branch_to_force_pull]
$ git branch -D tmp
就是这样!
一种比较容易的方式是:
git checkout --theirs /path/to/file.extension
git pull origin master
这将在 Git 上的文件上覆盖本地文件
我刚刚解决了这个问题 自己,因为:
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 藏宝分支",虽然藏宝 可能会给你带来麻烦 在最初的几处尝试,
i 使用此命令删除本地文件, 阻止我进行拉动/ 合并 。 但请注意! 运行 git 合并... 首先看看是否只有那些您真的想要删除的文件 。
git merge origin/master 2>&1 >/dev/null | grep ^[[:space:]] | sed s/^[[:space:]]//g | xargs -L1 rm
git 合并列表, 其中包括所有这些文件。 它们是由一些白色空间预设的 。 2 & gt; & 1 & gt; / dev/ null 将错误输出重定向为标准输出, 因此只能用 grep. grep {[: space: ]] 过滤带有文件名称的行 。 sed s/ {[ [: space: ]] / g trim 从一开始就是白色空间。 xargs - l1 rm 呼叫每个文件的rm, 将其删除 。
处理时要小心: 无论 git 合并输出, 以白色空格开始的每条线都会要求 rm 。
我不清楚为什么有人还没说到fack_head呢。
git fetch origin master && git reset --hard FETCH_HEAD
如果您想把它放在别名中, 命令是:
git config --global alias.fpull '!git fetch origin master && git reset --hard FETCH_HEAD'