2016-09-19 195 views
0

我是git的新手,目前正在尝试各种组合来理解git。Git Hard重置单个文件混淆

我克隆我的仓库其中有两个文件。现在我对一个文件进行了更改(比如说“first.txt”)并将其提交到分段。

这一步后,我想重置“first.txt”对其进行远程对应,使得没有git的承诺与“first.txt”是存在于我的分支历史。 现在,如果我用 -

git checkout origin/master first.txt 

这将只需更换我与远程文件,但混帐文件提交历史该文件是不可替代的。

如果我使用 -

git reset --hard <sha1 commit id> 

然后恢复分支特定的承诺,所有提交了几次有丢失了。

现在我想明白的是,如果没有通过它我们可以硬重置的文件,以便它的全部内容,并提交历史还原到其远程的内容和历史上的任何方法。

感谢拿出时间来阅读我的问题!

如果downvoting那么请让我知道还有什么可能的问题得到了改善。

谢谢

+0

http://stackoverflow.com/questions/215718/reset-or-revert-a-specific-file-to-a-specific-revision -using-git – Salailah

+0

上述链接中提到的方法仅用于将文件的内容恢复到特定的提交。我提到的第一条命令是同一个命令。这种方法的问题是该文件的提交历史记录在本地不会改变。 –

回答

3

提交表示整个存储库的更改。如果您想要将单个文件恢复到某个其他版本检出,并且提交是最佳选择。否则,你必须整个回购恢复到远程是这样的:

git reset --hard origin/master 
git pull origin master 
+0

但是,这将重置在其他文件中进行的所有本地提交。我们能否不仅仅从还原包括其历史记录中恢复单个文件? –

+0

我明白,可以从远程检出该文件然后提交它的方法。但是它会产生不必要的提交,现在是无效的。 –

+1

我不认为这可能在混帐。提交是整个存储库的历史记录。你不能只恢复一个文件提交历史记录,不能影响其他文件。签出一个文件远程版本,然后提交它是最好的选择。 –