我如何强制在 git pull 上覆盖本地文件 ? 我的本地仓库包含一个与服务器相同的文件名文件 。
错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖
我如何强制在 git pull 上覆盖本地文件 ? 我的本地仓库包含一个与服务器相同的文件名文件 。
错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖
当前回答
所需经费:
跟踪本地更改, 这样这里没有人会失去它们。 使本地存储库与远程源存储库匹配 。
解决方案 :
隐藏本地更改。 获取一个不看. gitignore 的文件和目录, 并硬重置到源头 。 git 隐藏 - 包含未跟踪的 git 抓取 - all git clean - fdx git 重置 - 硬源/ master
其他回答
i 使用此命令删除本地文件, 阻止我进行拉动/ 合并 。 但请注意! 运行 git 合并... 首先看看是否只有那些您真的想要删除的文件 。
git merge origin/master 2>&1 >/dev/null | grep ^[[:space:]] | sed s/^[[:space:]]//g | xargs -L1 rm
git 合并列表, 其中包括所有这些文件。 它们是由一些白色空间预设的 。 2 & gt; & 1 & gt; / dev/ null 将错误输出重定向为标准输出, 因此只能用 grep. grep {[: space: ]] 过滤带有文件名称的行 。 sed s/ {[ [: space: ]] / g trim 从一开始就是白色空间。 xargs - l1 rm 呼叫每个文件的rm, 将其删除 。
处理时要小心: 无论 git 合并输出, 以白色空格开始的每条线都会要求 rm 。
这四个命令对我管用
git reset --hard HEAD
git checkout origin/master
git branch -D master
git checkout -b master
执行这些命令后要检查/拉动
git pull origin master
我尝试了很多,但终于成功地 与这些命令。
奖金 :
说到先前的回答中的拉/拉/拉/加,我想分享一个有趣的和有成果的把戏,
git Pull -- rebase
以上命令是我生命中最有用的命令 节省了很多时间
在将您新承诺推进到服务器之前, 请尝试此命令, 它会自动同步最新的服务器更改( 加上一个抓取+合并) , 并将您的承诺放在 git 日志的顶部 。 无需担心手动拉动/ 合并 。
查找“ 直接拉动 - rebase ” 的操作细节 ? @ info: whatsthis
您可能会发现此命令有助于丢弃本地更改 :
git checkout <your-branch> -f
然后进行清理( 从工作树上移走未跟踪的文件) :
git clean -f
如果您想要除去未跟踪的文件之外, 还要删除未跟踪的目录 :
git clean -fd
此解决方案总是在运行 。
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