我如何强制在 git pull 上覆盖本地文件 ? 我的本地仓库包含一个与服务器相同的文件名文件 。
错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖
我如何强制在 git pull 上覆盖本地文件 ? 我的本地仓库包含一个与服务器相同的文件名文件 。
错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖
当前回答
奖金 :
说到先前的回答中的拉/拉/拉/加,我想分享一个有趣的和有成果的把戏,
git Pull -- rebase
以上命令是我生命中最有用的命令 节省了很多时间
在将您新承诺推进到服务器之前, 请尝试此命令, 它会自动同步最新的服务器更改( 加上一个抓取+合并) , 并将您的承诺放在 git 日志的顶部 。 无需担心手动拉动/ 合并 。
查找“ 直接拉动 - rebase ” 的操作细节 ? @ info: whatsthis
其他回答
这里的答案似乎大多集中在主分支上; 但是,有时我在两个不同的地方 研究同一个功能分支, 我希望一个在另一个在重新基点上得到反映, 而不是跳过很多圈子。
根据Rna的回答和Torek对类似问题的回答, 我得出了一个非常有效的答案:
git fetch
git reset --hard @{u}
从一个分支运行它, 它只会重新设置你的地方分支 到上游版本。
也可以将它写进别名(git strengpull)中:
git 配置别名.forcepull "! git 获取; git 重设 - hard u}"
或者,在您的. git config 文件 :
[alias]
forcepull = "!git fetch ; git reset --hard @{u}"
享受吧!
最顶尖的答案会给有类似问题的人带来问题, 但不想失去本地文件。 例如,
以下版本将您本地的更改引入临时分支( 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
假设另一个仓库是源主
您可以在您的工程基准文件夹中以文件忽略该文件 :
. jutignore( )
public/images/*
然后拉动修改,然后从您的 gitignore 文件中删除该行 。
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 restore .
。指目录中的所有文件。