2010-01-26 46 views
2

远程分支我使用Git我的个人项目在assembla.com托管远程仓库。我已经习惯了一个简单的svn般的工作流程,但现在我尝试这样做,(我认为)的东西应该是比较简单的,但是git的文件并没有帮助我实现它为止。储蓄变化Git中

这就是这种情况。我在本地主分支中做了一系列更改,并提交了它们。现在我意识到我的变化并不是绝对必要的,而且对性能有害,但在将来可能是有用/必要的。所以我想恢复以前的状态,同时保持这些更改存储在某个地方。当然,git reset --hard不会这么做,因为它会永久删除我的更改。

我不知道这是正确的解决方案,但我想使这些变化的一个分支,但我不能完全弄清楚命令的正确顺序这样做。请注意,我想跟踪远程存储库中的这些更改,而不仅仅是我的本地存储库,因为我使用不同的计算机工作。

我将是如何做到这一点,他们是否涉及远程分支机构或没有任何想法感谢。

回答

3

你想在当前HEAD去创建一个分支:

git branch possibly-useful-stuff 

,然后重置您的主分支回到属于它的地方,可能是其中之一:

git reset --hard origin/master # the remote branch 
git reset --hard master~<n>  # n commits before master 
git reset --hard <hash>   # a specific commit 

要跟踪的他们在远程,你只需要将这个分支推到远程:

git push <remote> possibly-useful-stuff 
+0

感谢您的回答,这个工作。 – dimatura 2010-01-27 15:23:40

1

s实现目标是创建一个包含当前状态的新分支。然后,您可以将其推送到远程主机,并将主分支重置回远程主机的位置。

E.g.

git branch side-lined 

git push origin side-lined 

git reset --hard origin/master 
0

我现在没有特别的git,但我使用Mercurial。如果我遇到了Mercurial的这种情况,我会将它标记为分支(某种程度上来说),然后检查所需的修订版本。

在我的下一个承诺,水银会创建一个新的修改。我知道这是一般性的,但我有这个想法,所以我分享了它。

的Git和Mercurial是相似的,所以我觉得应该想法为你工作...(请注意,有术语的差异,我可能没有使用正确的术语)

注意:看来,别人从此发布了git特定的指导,完成了我所描述的内容。

+0

为什么你会发布一个普遍的答案时,已经有三个重复的答案与细节? – Cascabel 2010-01-26 18:45:57

+0

我正在写作,并没有看到他们出现。除此之外,我觉得如果要给出确切的命令,给出一般的想法以便做什么会更有成效。 – 2010-01-26 18:47:05

+0

好吧,对不起,我原以为它的原始答案已经有点长了。总体思路是好的,但在给予初学者建议时,将mercurial和git混合起来会有点危险,因为术语有不同。在这种情况下,git仓库中只有一个HEAD(它指向当前分支),并且直接创建分支(而不是将分支标记为提交)。 – Cascabel 2010-01-26 19:00:02