在Git中保存远程分支中的更改

时间:2010-01-26 18:36:15

标签: git

我正在使用Git进行个人项目,并在assembla.com上托管远程存储库。我已经习惯了一个简单的类似svn的工作流程,但现在我正在尝试做一些(我认为)应该相对简单的事情,但是git文档到目前为止还没有帮助我实现它。

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

我不确定这是正确的解决方案,但我正在考虑使用这些更改创建一个分支,但我无法确定正确的命令序列。请注意,我想跟踪远程存储库中的这些更改,而不仅仅是我的本地存储库,因为我在不同的计算机上工作。

对于如何做到这一点,无论是否涉及远程分支,我都会感激不尽。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

最简单的方法是创建一个包含当前状态的新分支。然后,您可以将其推送到远程主站并将主分支重置回远程主站的位置。

E.g。

git branch side-lined

git push origin side-lined

git reset --hard origin/master

答案 2 :(得分:0)

我现在不具体,但我使用的是Mercurial。如果我使用Mercurial遇到这种情况,我会将其标记为分支(不知何故,某种程度上),然后查看所需的修订版。

在我的下次提交中,Mercurial将创建一个新的 head 修订版。我知道这是一般的,但我有这个想法,所以我分享了它。

Git和Mercurial是相似的,所以我认为这些想法对你有用......(请注意,术语存在差异,我可能没有使用正确的术语)

注意:似乎其他人已经发布了git特定的指示,正如我所描述的那样。