我运行了以下内容:
git checkout <commit-hash> some_directory
在我的master
上,并希望返回master
以前的干净状态。我最初的想法是
git checkout master
会做的但是无济于事,因为有些文件在分支上显示为“新”。
答案 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