如何在执行 git pull
命令时强制覆盖本地文件?我的本地仓库中包含与服务器上相同文件名的文件。
错误:无法完成合并,未跟踪的工作树文件 'example.txt' 将被覆盖。
如何在执行 git pull
命令时强制覆盖本地文件?我的本地仓库中包含与服务器上相同文件名的文件。
错误:无法完成合并,未跟踪的工作树文件 'example.txt' 将被覆盖。
这四个命令对我来说可行。
git reset --hard HEAD
git checkout origin/master
git branch -D master
git checkout -b master
执行这些命令后,请检查/拉取
git pull origin master
我尝试了很多次,但最终通过这些命令成功了。
git fetch --all
git reset --hard origin/develop
我阅读了所有的答案,但我正在寻找一个单一的命令来完成这个操作。这是我的做法:在.gitconfig中添加了一个git别名。
[alias]
fp = "!f(){ git fetch ${1} ${2} && git reset --hard ${1}/${2};};f"
将您的命令作为
git fp origin master
等同于
git fetch origin master
git reset --hard origin/master
不要使用git reset --hard
。这会删除他们的更改,这可能是完全不可取的。相反:
git pull
git reset origin/master
git checkout <file1> <file2> ...
当然可以使用 git fetch
替代 git pull
,因为它明显不会合并,但如果你通常使用 pull,在这里继续 pull 是有意义的。
所以,这里发生的是 git pull
更新了你的 origin/master 引用 ;git reset
更新了你的本地分支引用 成为与 origin/master 相同,而不更新任何文件,因此你的检出状态未更改;然后 git checkout
根据需要还原文件到你的本地分支索引状态 。在现场和上游主分支上完全添加了相同的文件的情况下,索引已经匹配了重置后的文件,因此通常情况下你根本不需要执行 git checkout
。
如果上游分支还包含你想要自动应用的提交,则可以按照该过程的微妙变化进行操作:
git pull
git merge <commit before problem commit>
git reset <problem commit>
git checkout <file1> <file2> ...
git pull
git fetch --all & git reset --hard origin/master
我使用了这个命令来删除本地文件,以便进行pull/merge操作。但是要小心!先运行git merge ...
命令,看看是否只有那些你真正想要删除的文件。
git merge origin/master 2>&1 >/dev/null | grep ^[[:space:]] | sed s/^[[:space:]]//g | xargs -L1 rm
git merge
列出了所有这些文件,它们都以一些空白开头。2>&1 >/dev/null
将错误输出重定向到标准输出,因此会被 grep
捕获。grep ^[[:space:]]
仅过滤具有文件名的行。sed s/^[[:space:]]//g
去掉开头的空格。xargs -L1 rm
对这些文件中的每一个调用 rm
,删除它们。小心操作:无论 git merge
输出什么,rm
都将针对以空格开头的每一行进行调用。
我曾试图在Angular2-Webpack-Starter上使用Material2分支,但遇到了很大的困难。这是我下载和使用该分支的唯一方法。
git clone --depth 1 https://github.com/angularclass/angular2-webpack-starter.git
cd angular2-webpack-starter/
git checkout -b material2
打开项目文件夹并删除所有非隐藏的文件和文件夹,保留所有隐藏的内容。
git add .
git commit -m "pokemon go"
git reset --hard
git pull origin material2
当编辑器弹出时,按 ':wq',然后按Enter键。
现在你已经准备好了。
如果你在编写代码时发现新的更改是一个巨大的错误或不需要的,你可以简单地使用替代方法:
git restore .
其中“.”表示目录中的所有文件。
cd $GIT_ROOT_DIRECTORY
git fetch origin/$TARGET_BRANCH
git rm -rf --cached .
git reset --hard origin/TARGET_BRANCH
git clean -df
git pull origin $TARGET_BRANCH
origin/branch_to_overwrite
相同的状态,包括代码和提交记录。命令为:git reset --hard origin/branch_to_overwrite
。 - Andrew Atkinsongit branch <branch> -D
git reset <commit> --hard
git branch <branch>
git --set-upstream-to=origin/<branch> <branch>
git pull
git config core.autocrlf false; git ls-files -z | xargs -0 rm; git checkout .
。 - Chloe