我如何强制在 git pull 上覆盖本地文件 ? 我的本地仓库包含一个与服务器相同的文件名文件 。
错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖
我如何强制在 git pull 上覆盖本地文件 ? 我的本地仓库包含一个与服务器相同的文件名文件 。
错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖
当前回答
另一种解决的方法 就是先用 Git 隐藏来隐藏任何未承诺的更改, 然后运行
git pull --rebase=interactive -s recursive -X theirs
在交互式的重新基点中,您可以改变您本地所有不想要的放弃承诺, 这将摆脱它们, 并离开您在远程分支的头部, 而不引入合并承诺 。
现在,你可以运行git 藏品申请 如果你有本地藏品 更改了您想要带回来。
其他回答
这是恢复变化的最佳做法:
git 承诺执行您的分阶段更改, 以便将其保存在 reflog( 见下文) git 获取最新的上游更改 git 重设 -- 硬源/ master 硬重置到源主分支
reflog 记录本地仓库中更新的分支和其他引用。 或简单地放入 - reflog 是您更改的历史 。
所以这总是一个伟大的实践 承诺。 承诺被附在折叠纸上, 保证你永远有办法 检索删除的代码 。
我已尝试了大部分我在这里能找到的东西,
工作是 Git 合并 -x 他们的工作
最顶尖的答案会给有类似问题的人带来问题, 但不想失去本地文件。 例如,
以下版本将您本地的更改引入临时分支( tmp) , 检查原始分支( 我假设是母分支) 并合并更新 。 您可以用隐藏来做到这一点, 但我发现通常更容易使用分支/ 合并方法 。
git checkout -b tmp
git add *; git commit -am "my temporary files"
git checkout master
git fetch origin master
git merge -s recursive -X theirs origin master
假设另一个仓库是源主
这里的答案似乎大多集中在主分支上; 但是,有时我在两个不同的地方 研究同一个功能分支, 我希望一个在另一个在重新基点上得到反映, 而不是跳过很多圈子。
根据Rna的回答和Torek对类似问题的回答, 我得出了一个非常有效的答案:
git fetch
git reset --hard @{u}
从一个分支运行它, 它只会重新设置你的地方分支 到上游版本。
也可以将它写进别名(git strengpull)中:
git 配置别名.forcepull "! git 获取; git 重设 - hard u}"
或者,在您的. git config 文件 :
[alias]
forcepull = "!git fetch ; git reset --hard @{u}"
享受吧!
将索引和头重置为源/ 主机,但不重置工作树 :
git reset origin/master