Git用来自repo的文件覆盖本地文件,但保留本地(新)文件

时间:2015-03-22 18:52:12

标签: git github repository

我希望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

3 个答案:

答案 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

这将为您提供合并冲突,接受您想要的案例的远程文件,您的新文件将被保留。