2010-01-26 47 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