2010-01-08 181 views
17

我是Git新手,有點困惑。我有一個主分支,並創建了第二個功能分支。GIT:我需要在檢查另一個分支之前提交我的分支,存儲過程如何?

如果我在功能分支中進行了更改,然後切換到Master,如果我沒有提交,我的更改會丟失嗎?

暗藏什麼地方起作用,是你在切換分支(但不想提交)之前做的事情,還是僅僅恢復一些更改,以便可以暫時返回到以前的代碼?

回答

12

除非清理樹,否則不能更改爲其他分支。這通過提交您的更改,恢復它們或將它們保存到存儲中完成。

+4

當切換分支時,'git checkout'將'繼續'分階段和非分階段的更改,只要這些更改被限制爲當前分支和新分支中其他方面相同的文件(即,如果更改將應用​​於任一分支)。此外,可以使用'git checkout --merge'強制合併嘗試,但這可能會導致合併衝突,並且這些衝突可能難以解決(這可能導致難以返回到預結賬狀態)。 – 2010-03-20 05:54:14

+0

哇,不知道是誰,但是感謝-2 downvote ......我前一陣子也想到了這個,但是在寫作的時候我記得這是不可能的。對Git 1.7來說是新的嗎? – Htbaa 2010-03-22 09:49:00

2

您可能不希望爲此使用存儲。

如果您真的想在同一時間在主控和功能分支上進行開發,我建議您克隆存儲庫,使用克隆和主服務器,然後使用推拉在它們之間移動更改。

如果你經常在它們之間切換,我建議在切換之前檢查;檢查垃圾沒有任何問題; git可以很容易地在稍後進行分類。

+0

這是我的情況。我有幾個網站的解決方案。我想同時在不同版本的項目上工作,我不想爲每個項目使用不同的工作目錄。所以我正在尋找一種在不同版本的項目之間切換的方法,但讓git管理更改所有文件,以便我可以使用指向每個網站的一個IIS設置,而不必更改所有指向的設置特定路徑等。 – BoomTownTech 2010-01-08 22:41:01

+1

請注意,「藏匿」通過按照您的建議進行檢查而工作。與其他任何版本一樣,它在存儲庫中是一個有效的提交。它恰好*不是從分支引用引用的,而是由'stash'引用的。請參閱此處的*討論*部分:http://www.kernel.org/pub/software/scm/git/docs/git-stash.html – seh 2010-01-08 22:55:33

+3

啊,但很容易忘記你藏起來的事實,如果你的注意力轉移到其他事情上。在我看來,向分支負責人承諾會更安全。 – 2010-01-08 23:06:36

相關問題