我如何强制在 git pull 上覆盖本地文件 ? 我的本地仓库包含一个与服务器相同的文件名文件 。

错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖


当前回答

在窗口上执行此单命令 :

git fetch --all & git reset --hard origin/master

其他回答

警告: 任何未承诺的本地文件更改将会丢失。 任何本地文件若未使用 Git 进行追踪, 将不会受到影响 。 @ info: whatsthis


首先, 更新所有来源/ & lt; branch> refs 到最近的 :

git fetch --all

备份当前分支( 如母版) :

git branch backup-master

跳转到来源/ 管理员的最新承诺, 并检查这些文件 :

git reset --hard origin/master

解释:

git 从远程获取最新下载, 但不试图合并或重标任何内容 。

git 重置主控分支重置为您刚获取的文件。 -- hard 选项更改您工作树中的所有文件, 以匹配源/ 主机中的文件 。


维持当前当地承付额

[*]:值得指出的是,通过在重塑之前从主人那里设立一个分支,可以保持目前的当地承诺:

git checkout master
git branch new-branch-to-save-current-commits
git fetch --all
git reset --hard origin/master

在此之后,所有旧承诺都将保留在新的部门到储蓄的当前承诺中。

未承诺的更改

将丢失未承诺的更改, 但是( 即使是阶段的) 。 请确保隐藏并承诺您需要的一切 。 因为您可以运行以下操作 :

git stash

然后重新应用这些未承诺的修改:

git stash pop

我刚刚解决了这个问题 自己,因为:

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 藏宝分支",虽然藏宝 可能会给你带来麻烦 在最初的几处尝试,

最顶尖的答案会给有类似问题的人带来问题, 但不想失去本地文件。 例如,

以下版本将您本地的更改引入临时分支( 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

假设另一个仓库是源主

"我的地方变化很小,或者我的地方变化不起作用。 我只是想重置一切 回到原创。 我知道所有的地方变化都会丢失。"

如果情况是这样的话:

git reset --hard
git pull

这将删除所有未承诺的更改, 然后拉动 :

git reset --hard HEAD
git pull