假设我使用以下命令创建一个空的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”,因为我没有在所有合并之前进行提交。
答案 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值并使用该值。