我希望git同步并覆盖本地计算机上同样存在于存储库中的所有文件。我不希望git删除对同一目录的任何本地更改,例如:。
repo files:
folder_a/
包含:file_a, file_b, file_c
本地文件:
folder_a/
包含:file_a, file_b, file_c and file_d
现在我希望git用repo中的所有文件替换所有文件,但不要触摸file_d
。
答案 0 :(得分:0)
如果您只想覆盖存储库中存在的文件的本地更改,但保持新文件不变。您可以使用git checkout。
此处git跟踪的文件中的所有本地更改都将覆盖您上一次提交:
git checkout -- .
您也可以仅在一个文件中放弃更改,并将其名称传递给git checkout:
git checkout -- file_a
答案 1 :(得分:0)
使您的本地分支看起来与遥控器完全相同,
git fetch origin
然后,在分支中,您要覆盖,
git reset --hard origin/<branch-name>
您不会丢失未跟踪的文件。
<强>更新强>
假设文件已添加到索引中。您可以恢复已删除的文件(如果没有发生垃圾收集)。跑吧,
git fsck --cache --unreachable $(git for-each-ref --format="%(objectname)")
这将显示所有无法访问的对象的列表。
Checking object directories: 100% (256/256), done.
Checking objects: 100% (195/195), done.
unreachable blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
从所有列出的blob中重新创建文件,
git show e69de2 > filname
答案 2 :(得分:0)
首先做一个
git stash
然后是
git pull --rebase
然后执行git stash pop
这将为您提供合并冲突,接受您想要的案例的远程文件,您的新文件将被保留。