我如何强制将本地文件覆盖在git pull
我的本地仓库包含一个文件名文件名与服务器上的文件名相同。
错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖
我如何强制将本地文件覆盖在git pull
我的本地仓库包含一个文件名文件名与服务器上的文件名相同。
错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖
当前回答
如果您正在制定您的代码, 发现新的更改是一个巨大的错误或意外, 您可以简单地使用其他选项, 比如 :
git restore .
。指目录中的所有文件。
其他回答
我认为答案很可怕,但虽然赫奇猪的答案可能更好,但我不认为它能有那么优雅。fetch
和merge
使用定义的战略, 从而保存您本地的更改, 只要它们不是您试图强制覆盖的文件之一 。
git add *
git commit -a -m "local file server commit message"
git fetch origin master
git merge -s recursive -X theirs origin/master
-X
是一个选项名称,并且theirs
是此选项的值。 您选择使用their
更改(另一个选项是ours
如果有冲突,则更改。
这将删除所有未承诺的更改, 然后拉动 :
git reset --hard HEAD
git pull
似乎大多数答案都集中在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}"
尽情享受吧!
我总结了其他答案 你可以执行git pull
无错误 :
git fetch --all
git reset --hard origin/master
git reset --hard HEAD
git clean -f -d
git pull
警告警告警告警告:这个脚本非常强大,所以你可能会失去变化。
所需经费:
解决方案 :
获取获取与 a 具有清洁联 联 年 月 日 月 日 月 月 日 月 月 日 月 月 月 日 月 月 日 月 月 日 月 月 月 日 月 月 日 月 月 月 日 月 的 月 月 月 日 月 月 日 月 的 月 月 月 月 日 月 月 月文件 文件和目录目录目录目录忽略忽略. jutignore( )和硬重置重置至来源来源.
git stash --include-untracked
git fetch --all
git clean -fdx
git reset --hard origin/master