我如何强制将本地文件覆盖在git pull
我的本地仓库包含一个文件名文件名与服务器上的文件名相同。
错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖
我如何强制将本地文件覆盖在git pull
我的本地仓库包含一个文件名文件名与服务器上的文件名相同。
错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖
当前回答
一旦您进行了 Git 拖动, 您就会得到不匹配的文件列表。 如果文件数量不大, 那么您就可以检查这些文件, 此动作将会覆盖这些文件 。
git 检出 - <filename>
我通常会这样做, 如果为了快速检查, 我修改服务器上的本地文件( 没有推荐的, 以及您在获取此议题: D 背后的理由) , 我找到解决方案后会检查被修改的文件 。
其他回答
首先,尝试标准的方式:
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 reset HEAD --hard
在某些情况下会失败吗?
自定义规则.gitattributes file
拥有( 拥有)eol=lf
. givatritites 中的规则可能导致 Git 将 CRLF 线条转换为某些文本文件中的 LF , 从而修改某些文件更改 。
如果情况如此,你必须实施这些CRLLF/LF的改变(通过在git status
),或尝试:git config core.autcrlf false
暂时忽视他们。
文件系统不兼容
当您使用不支持权限属性的文件系统时。 例如, 您有两个仓库, 一个在 Linux/ Mac (Linux/ Mac) 上 。ext3
/hfs+
和另一个基于FAT32/NTFS的文件系统。
您注意到,有两种不同的文件系统, 所以不支持 Unix 权限的系统基本上不能在不支持这种权限的系统上重置文件权限, 所以不管如何--hard
你试试看,GIT总能察觉到一些"变化"
警告,如果您在 gitignore 文件中有任何目录/ * 条目, 这样做将永久删除您的文件 。
有些答案似乎很可怕。 从发生在Lauri身上的可怕意义来看,
相反(给予 > v1.7.6):
git stash --include-untracked
git pull
稍后,您可以清理藏匿历史。
手动,一对一:
$ git stash list
stash@{0}: WIP on <branch>: ...
stash@{1}: WIP on <branch>: ...
$ git stash drop stash@{0}
$ git stash drop stash@{1}
残酷地说,所有 - 一次:
$ git stash clear
当然,如果你想回到你藏的东西:
$ git stash list
...
$ git stash apply stash@{5}
“我的地方变化很小,或者我的地方变化不起作用。我只想将一切重置回到原创。我知道我的地方变化都将失去。”
如果情况是这样的话:
git reset --hard
git pull
我也有同样的问题 没人给我这个解决方案 但对我有用
我解决它的方法是:
.git
目录。git reset --hard HEAD
git pull
git push
现在它的工作原理。
我刚刚解决了这个问题 自己:
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 藏宝分支",虽然藏宝在最初的几例尝试中 可能会给你带来麻烦, 所以首先试验一个非关键项目...