给定一个包含2个文件的项目:fileA
和fileB
。两者都被添加到git-repository中。然后我将fileA
添加到.gitignore
(并刷新了git-cache),以便在当前主服务器中只存在fileB
。我想现在将此存储库克隆到另一台机器,但缺少fileA。
我接下来要做的是从提交中创建一个分支,其中存在两个文件。现在最大的问题是:如何在不丢失该文件的情况下返回主提交?
对不起标题。我试图描述,但是......
答案 0 :(得分:3)
如果您只需要恢复一个文件,则可以使用git checkout
:
$ git checkout <revision_where_fileA_exists> fileA
$ git add fileA
$ git commit -m "Restored fileA"
您还必须修改.gitignore
,以便不再忽略fileA
。
答案 1 :(得分:3)
我认为Josh的回答可能就是你想要的这种情况,但是如果你再次遇到,你有几个选择...经典的合并或拉动将始终有效,你只需要指定-f如果你是试图取消删除您祖先中的文件。否则,git会抱怨。
$ git checkout master
$ git pull -f . <branch>:master
如果您只删除文件,该命令应自动提交您的更改。您还可以浏览以下命令以获得更多还原特定功能:
$ git reset
$ git revert
如果您想要退出的小变更不需要污染日志,那么确实会使用重置,但它非常强大,请查看文档。
Revert用于撤消过去发生的事情。更像是“退出”改变。