我如何强制在 git pull 上覆盖本地文件 ? 我的本地仓库包含一个与服务器相同的文件名文件 。
错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖
我如何强制在 git pull 上覆盖本地文件 ? 我的本地仓库包含一个与服务器相同的文件名文件 。
错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖
当前回答
这是恢复变化的最佳做法:
git 承诺执行您的分阶段更改, 以便将其保存在 reflog( 见下文) git 获取最新的上游更改 git 重设 -- 硬源/ master 硬重置到源主分支
reflog 记录本地仓库中更新的分支和其他引用。 或简单地放入 - reflog 是您更改的历史 。
所以这总是一个伟大的实践 承诺。 承诺被附在折叠纸上, 保证你永远有办法 检索删除的代码 。
其他回答
我有一个奇怪的状况, 无论是git clean or git reset works. 我必须在每一个未跟踪的文件上使用以下脚本, 从 git 索引中删除冲突文件 :
git rm [file]
那样我就能好好拉了
所有这些解决方案的问题在于,它们要么过于复杂,要么是一个更大的问题,就是它们从网络服务器上移除了所有未跟踪的文件,我们并不想这样做,因为服务器上总是有需要的配置文件,而不是Git仓库。
这是我们使用的最干净的解决方法:
# Fetch the newest code
git fetch
# Delete all files which are being added, so there
# are no conflicts with untracked files
for file in `git diff HEAD..origin/master --name-status | awk '/^A/ {print $2}'`
do
rm -f -- "$file"
done
# Checkout all files which were locally modified
for file in `git diff --name-status | awk '/^[CDMRTUX]/ {print $2}'`
do
git checkout -- "$file"
done
# Finally pull all the changes
# (you could merge as well e.g. 'merge origin/master')
git pull
第一个命令获取最新数据。 如果在存储库中添加了任何文件, 第二次命令检查会从本地存储库中删除那些会引发冲突的未跟踪文件。 第三次命令检查了所有本地修改过的文件。 最后, 我们尝试将更新更新到最新版本, 但这次没有冲突, 因为重写中未跟踪的文件已经不存在, 所有本地修改过的文件已经不存在了 。
您可以尝试 Git pull - 力 或者可能通过使用 Git 藏起来来隐藏你的行为 然后运行 git pull 。
"我的地方变化很小,或者我的地方变化不起作用。 我只是想重置一切 回到原创。 我知道所有的地方变化都会丢失。"
如果情况是这样的话:
git reset --hard
git pull
对于那些不喜欢重置的人,我喜欢这样的做法:
git checkout branchname # go to your branch
git fetch origin branchname # fetch the remote
git checkout -b backup # optionally, mark your remote as a backup
git branch -f branchname origin/branchname # force your local branch to be equal to the fetched origin/branchname