2012-08-31 37 views
0

我發現這種情況相當「普遍」,但環顧四周沒有任何幫助。 我不是Git專家,但這應該很簡單。如何只推送一些文件到存儲庫(並非所有提交)

讓我們做出了榜樣:

UserA和用戶B在同一版本(A)工作。 UserA提交併推送到遠程,所以現在它在版本B中。

我只提交了一些我希望推送的文件。

當我試圖拉(因爲不可能因不同的版本而無法推送),Git會告訴我「未落實的更改將被合併覆蓋」。

UserA: A------B 
     \  \<-not possible 
UserB: \------C 

我希望拉動新版本保留我的所有更改,也是不承諾的版本。可能嗎?

我使用IntelliJ和他的內置插件(我覺得它非常友好),所以如果有人能解釋我也是如何做到這一點從那裏將是偉大的!

回答

1

這是可能的。

我認爲最好的做法是像你已經做的那樣提交你想要的改變(假設你在分支「dev」上工作)。然後你創建一個新的分支,其變化未被提交,假設你稱之爲「mywork」:git checkout -b mywork。您在此分支上提交其他更改。

然後來合併。首先檢查你是否在正確的分支git checkout dev上工作。在那個時候,我不太確定它能正常工作,所以一個想法是運行git checkout -b tempdev commitIdWithChangedToBePushed(即你從前提交分支)。

然後,您將合併所有。運行git pull origin(原點是你的遙控器),就像你所做的那樣。現在,它們都在本地正確合併,在tempdev上。將tempdev合併到dev中並刪除tempdev。現在,推動起源。

因此,您現在有2個分支:您的乾淨更改爲dev,您的其他更改爲mywork。如果您的想法是稍後集成其他更改,則可以合併它們。

順便說一下,我不知道IntelliJ插件,所以只是試圖在那裏重現它。

它也可以使用隱藏,但我不是它的粉絲,只是git stash和合並後,git stash pop(或我認爲這是過程)。我不喜歡它,因爲合併並不總是一個微不足道的過程,讓你的變化回來會讓你陷入困境。另外,你可能會忘記你儲存的變化,並藏匿在他們身上或者忘記取消儲存。也許那只是我而已。

+0

是的,我正在考慮分支機構,這可能是唯一的解決方案!謝謝,我會盡快嘗試。 :) – Enrichman

相關問題