GIT如何在没有提交的情况下重置

时间:2012-10-02 13:35:37

标签: git

假设我使用以下命令创建一个空的GIT仓库:

# git init

然后我开始添加远程存储库:

# git remote add remote1 ........
# git remote add remote2 ........
# git remote add remote3 ........

和抓取:

# git fetch --all

最后,我将我需要的所有远程分支合并到我的本地仓库中:

# git merge remote1/branchX
# git merge remote2/branchY
# git merge remote3/branchZ

现在,假设我必须在所有合并之前重置我的本地仓库;自然解决方案似乎只是创建一个新的空存储库。但问题是:我的远程存储库的获取需要很长时间(小时),所以我想避免重新完成所有操作。

我无法执行“git reset”,因为我没有在所有合并之前进行提交。

2 个答案:

答案 0 :(得分:3)

欺骗这一点的一个不错的方法是在设置存储库时执行git init && git commit --allow-empty -m 'Initial commit.',这至少可以缓解不存在HEAD的症状。

但是既然你已经获取了所有遥控器,你就不需要吹掉存储库以创建一个新的空/无关分支,如果这更像你正在寻找的那样为:

git symbolic-ref HEAD refs/heads/new-branch

然后当您在HEAD上提交/合并任何内容时,git将为您填写新分支。一旦你有另一个现有的分支,你可以硬重置主人或做任何其他技巧,你想要玩弄他们。

答案 1 :(得分:0)

我认为这个帖子:Checkout old commit and make it a new commit提供了一些可能性。在合并之前检出先前提交之一或重置到该点。如果发生mutliple提交,我将首先在合并之前查找SHA值并使用该值。