我如何强制在 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 reset --hard HEAD~5

这会使你们再返于五次,然后是五次,

git pull

我通过查查如何解除Git合并发现这一点。

看起来最好的办法是首先做到:

git clean

以删除所有未跟踪的文件,然后继续使用通常的 Git 调用...

您可以在您的工程基准文件夹中以文件忽略该文件 :

. jutignore( )

public/images/*

然后拉动修改,然后从您的 gitignore 文件中删除该行 。

我所知道的是一个容易和不痛苦的方法:

$ git branch -m [branch_to_force_pull] tmp
$ git fetch
$ git checkout [branch_to_force_pull]
$ git branch -D tmp

就是这样!

1 步( 可选) 从您本地仓库根部中选择, 保存备份, 并清空当前文件夹 :

mkdir -p ../<branch>-bkp && mv --backup=t * ../<branch>-bkp

2. 从远程仓库下载分支的所有文件和文件夹:

git checkout <branch> && git add -A . && git reset --hard origin/<branch> && git pull

将 & lt;branch&gt; 替换为您想要覆盖的分支名称 。

评论:

您可能宁愿手动备份并删除当前文件和文件夹, 而不是第 1 步, 事实上, 我建议您在操作系统 gui 中用一个文件手处理器这样做。 如果您跳过第 1 步, 请注意 : 您将失去本地仓库中的所有工作 ! 重要 : 如果您退出 Git pull 在第 2 步中拖动, 您可能无法从远程仓库获取最新版本 。 根据下面的第二个引用, git 重置 -- hard 将会重置中转区域, 工作目录会匹配

参考文献:https://gitforwindows.org/https://www.atlassian.com/git/tutitors/undoing-changes/git-reset https://www.atlassian.com/git/tutitors/rewriting-history/git-reflog