我如何强制将本地文件覆盖在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
将呼吁每个以白色空格开始的行 。
其他回答
在 Windows 上执行此单命令 :
git fetch --all & git reset --hard origin/master
似乎大多数答案都集中在master
然而, 分支中, 有几次我在两个不同的地方 研究同一个功能分支, 我希望在一个分支中重设一个, 在另一个分支中反映出来, 而不是跳过很多圈子。
依据综合RNA 的答复和Torrek对类似问题的答复我已经想出了一个非常成功的计划:
git fetch
git reset --hard @{u}
从一个分支运行它 它只会重新设置你的地方分支 到上游版本。
这可以恰当地用在别名中(git alits) (Git) 。git forcepull
)以及:
git config alias.forcepull "!git fetch ; git reset --hard @{u}"
或者,在你的.gitconfig
文件 :
[alias]
forcepull = "!git fetch ; git reset --hard @{u}"
尽情享受吧!
您可以在您的工程基准文件夹中以文件忽略该文件 :
. jutignore( )
public/images/*
然后拉动修改,然后从您的 gitignore 文件中删除该行 。
这是恢复变革的最佳做法:
git commit
提交您预置的更改, 以便将其保存在reflog 格式的reflog(见下文)git fetch
获取最新的上游变化git reset --hard origin/master
硬重置源主分支缩略reflog 格式的reflog 本地存储库中正在更新的记录分支和其他参考资料简简简简简简简reflog 格式的reflog是更改的历史历史.
因此,这总是一个伟大的实践 承诺。 承诺被附在折叠件上, 以确保您永远有办法检索删除的代码 。
我知道一种容易和痛苦的方法:
$ git branch -m [branch_to_force_pull] tmp
$ git fetch
$ git checkout [branch_to_force_pull]
$ git branch -D tmp
就是这样!