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

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


当前回答

我不清楚为什么有人还没说到fack_head呢。

git fetch origin master && git reset --hard FETCH_HEAD

如果您想把它放在别名中, 命令是:

git config --global alias.fpull '!git fetch origin master && git reset --hard FETCH_HEAD'

其他回答

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

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

所有这些解决方案的问题在于,它们要么过于复杂,要么是一个更大的问题,就是它们从网络服务器上移除了所有未跟踪的文件,我们并不想这样做,因为服务器上总是有需要的配置文件,而不是Git仓库。

这是我们使用的最干净的解决方法:

# Fetch the newest code
git fetch

# Delete all files which are being added, so there
# are no conflicts with untracked files
for file in `git diff HEAD..origin/master --name-status | awk '/^A/ {print $2}'`
do
    rm -f -- "$file"
done

# Checkout all files which were locally modified
for file in `git diff --name-status | awk '/^[CDMRTUX]/ {print $2}'`
do
    git checkout -- "$file"
done

# Finally pull all the changes
# (you could merge as well e.g. 'merge origin/master')
git pull

第一个命令获取最新数据。 如果在存储库中添加了任何文件, 第二次命令检查会从本地存储库中删除那些会引发冲突的未跟踪文件。 第三次命令检查了所有本地修改过的文件。 最后, 我们尝试将更新更新到最新版本, 但这次没有冲突, 因为重写中未跟踪的文件已经不存在, 所有本地修改过的文件已经不存在了 。

我已尝试了大部分我在这里能找到的东西,

工作是 Git 合并 -x 他们的工作

您可能会发现此命令有助于丢弃本地更改 :

git checkout <your-branch> -f

然后进行清理( 从工作树上移走未跟踪的文件) :

git clean -f

如果您想要除去未跟踪的文件之外, 还要删除未跟踪的目录 :

git clean -fd

一旦您进行了 Git 拖动, 您就会得到不匹配的文件列表。 如果文件数量不大, 那么您就可以检查这些文件, 此动作将会覆盖这些文件 。

git 检出 - & lt; filename & gt;

i 通常会这样做,如果为了快速检查我修改服务器上的本地文件(没有推荐的和在您得到这个问题:d背后的大致原因), i 在找到解决方案后检查已修改的文件。