我如何强制在 git pull 上覆盖本地文件 ? 我的本地仓库包含一个与服务器相同的文件名文件 。
错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖
我如何强制在 git pull 上覆盖本地文件 ? 我的本地仓库包含一个与服务器相同的文件名文件 。
错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖
当前回答
我刚刚解决了这个问题 自己,因为:
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 藏宝分支",虽然藏宝 可能会给你带来麻烦 在最初的几处尝试,
其他回答
我读过所有答案,但我在找一个命令来做这个。 这就是我所做的。在.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 clean 删除所有未跟踪的文件/目录, 无法撤销 。
有时只是干净 - f 帮不上忙。 如果您有未跟踪的目录, - d 选项也需要 :
# WARNING: this can't be undone!
git reset --hard HEAD
git clean -f -d
git pull
警告: git clean 删除所有未跟踪的文件/目录, 无法撤销 。
先考虑使用 -n (-- dry-run) 的标记。 这将显示要删除的内容, 但不实际删除任何内容 :
git clean -n -f -d
示例输出 :
Would remove untracked-file-1.txt
Would remove untracked-file-2.txt
Would remove untracked/folder
...
首先,试一下标准方法:
git reset HEAD --hard # To remove all not committed changes!
git clean -fd # To remove all untracked (non-git) files and folders!
警告: 上面的命令只有在您没有执行时才会导致数据/ 文件丢失 ! 如果您不确定, 请先从整个仓库文件夹中获取备份 。
然后再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次
如果上面没有帮助,而你不在乎你的未追踪文件/目录(在万一情况下先备份),请尝试以下简单步骤:
cd your_git_repo # where 'your_git_repo' is your git repository folder
rm -rfv * # WARNING: only run inside your git repository!
git pull # pull the sources again
这将删除所有 git 文件( 免罪 . git/ dir , 在那里您全部负责) , 并再次拉动它 。
为什么Git 重置头 - 硬有时会失败?
. givatitribitte 中有 eol=lf 规则的. givatitribittes 文件中的自定义规则 。 givatitrifittes 文件中的 eol=lf 规则 。 givatripittes 中 . givatripittes 中 eol=lf 规则 . givatripittes 中 可能会通过将 折叠线条转换为 if in some text file filef. 如果是这样的话, 您必须执行这些kilf/lf 规则( 在 git status 状态中查看这些规则) , 或者尝试 : git config ore.autcilf 错误来暂时忽略它们 。 当您使用不支持许可属性的文件系统时, 文件系统无法兼容 。 例如, 您有两个仓库, 一个在 Linux/ mac (ext3/hf) 上 (ext3/hf) 。
这四个命令对我管用
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