2011-11-07 34 views
1

我使用的是git/github,偶然我一直致力于“主”分支而不是“4.2”。我现在已经创建了一个独立的分支,这就是“主”应该是“4.1”,并且挑选了基本的提交。我一直在犯错误的Git分支。如何清理?

Merges

我现在想复制“4.1”到主,以避免我在Nov1,2,3中所做的提交和7.什么是做到这一点的最好方法是什么?


我一直奉行:Create git branch, and revert original to upstream state,但得到这个:

$ git push origin :master 
remote: error: refusing to delete the current branch: refs/heads/master 
To [email protected]:atk4/atk4.git 
+0

它在Github上:https://github.com/atk4/atk4/network,并有相关的问题:http://stackoverflow.com/questions/4759492/how-to-recreate-the-github-network-图 – romaninsh

回答

1

我已经成功地恢复使用此:

# git back to my master branch 
git checkout master 

# reset branch to other branch 
git reset --hard 4.1 

# push changes and --force to avoid rejection 
git push --force origin master 

enter image description here

法师现在应该是这样。我想知道它会如何影响那些会“拉”主人的克隆人。

+0

拉和基本相同的提取和合并。因此,进行拉取(并且已经破碎的主人)的用户将在破碎的主人和固定的主人之间进行合并。这可能是奇怪的事情。您必须让他们重置为新的主服务器,如下所示:'git checkout master; git获取原点; git reset --hard origin/master'。 – igorw

1

如果他们做了git fetch,他们将有他们的远程追踪分支(起源/主人)指向一个新的地方。如果他们做了git pull他们将不得不处理冲突,如果他们的工作,他们还没有推动(如果他们也是主要工作)。取决于有多少人在这方面与你一起工作,这可能会或可能不是什么大不了的事情。

他们应该做什么,如果他们有主人签出是'混帐重置 - hard origin/master`。这会失去他们没有提交的任何提交。他们可能想要首先分手。然后,他们可以在准备好时重新设定或合并这些更改。

如果他们没有工作过主人,他们只是想更新自己的本地master分支,他们可以简单地

git push . +origin/master:master 

这样您就不必检出一个分支简单地同步它与远程。

+0

了不起的信息,很难得到。我很幸运可以很快注意到它,因为用户使用我的稳定版本,所以不会影响它们。你知道如何去做吗?我尝试恢复,但结束了很多冲突。我怎么能一次性恢复所有提交? – romaninsh

+0

你需要一个好的分支策略。如果你错误地把东西放在主人身上,解释情况的电子邮件很棒。无论使用什么工具,良好的沟通都会更进一步。以下是我的分支策略:https://plus.google.com/109096274754593704906/posts/R4qkeyRadLR –