从git checkout <sha1> <directory>返回

时间:2015-05-22 12:24:35

标签: git

我运行了以下内容:

git checkout <commit-hash> some_directory

在我的master上,并希望返回master以前的干净状态。我最初的想法是

git checkout master

会做的但是无济于事,因为有些文件在分支上显示为“新”。

3 个答案:

答案 0 :(得分:1)

当您运行git checkout <commit-hash> some_directory时,文件会显示为已添加。您可以使用git status

查看此信息
$ git status
On branch test
Changes to be committed:
[...]

当您处于此状态时,您必须执行以下操作:

git reset

取消暂停此更改,并且:

git checkout .

恢复HEAD中的内容。

git reset --hard在一个命令中基本相同。

答案 1 :(得分:1)

以下答案假设您没有想要与错误结帐的意外更改混合的新更改。

使用

取消结账时的更改
git reset master some_directory

git reset HEAD some_directory

使用

将工作树中的文件恢复到以前的状态
git checkout HEAD some_directory

最后,使用

清除主人最近提交中可能已删除的所有文件
git ls-files -z --others some_directory | xargs -0 rm

如果您完全确定,您希望按原样返回主人,并且不介意丢失可能存在的任何更改(无论是在some_directory还是其他地方),请跳过以上所有并运行

git reset --hard master

答案 2 :(得分:0)

!首先复制你的完整目录,然后再开始修复它;)特别是如果你没有远程和本地回购是你唯一拥有的那个。

你需要git reset(或git reset --hard)。

其他方式可能是:切换到某个分支,删除master git branch -D master 然后重新创建它 git checkout -b master origin/master