2015-06-14 59 views
1

我明白,一個命令來啓動一個新的分支是如何在我做出更改後在新分支中進行git提交?

git checkout -b <mybranch> 

然而,假設我有做,我要提交新的變化之前,已經創造了新的分支先見之明。

但通常情況並非如此。通常情況下,我開始編碼,然後可能會或可能不會做git add .然後想要提交一個新的分支。我怎麼做?

回答

2

做它anwyay:

git checkout -b <new_branch> 

什麼你會看到的東西,看起來像這樣:

git checkout -b new_branch 
M <changed_file> 
Switched to a new branch 'new_branch' 

你有沒有犯了什麼到Git的方法;與git add,你只能將文件移入分段。您仍然可以在您的演出工作中創建一個新分支。任何尚未上演的變化都有機會在新的分支上演。

+0

困惑。想結賬檢查從Git的代碼?如在重寫文件樹? – Ruby

+1

如果你正在做一個現有分支的直接結賬,是的。如果你正在創建一個新的分支,事實並非如此;你的新分支的參考資料和你從事這項工作的地方都是一樣的。 – Makoto

+2

@ТаняТ。請注意,Git通常不會讓您執行結賬,導致您丟失未提交的更改。當Git發現未被提交的變化將被結賬覆蓋時,它會停止,並要求你做一些事情(例如提交它們,撤消它們)。簽出指向與當前分支相同的提交的新分支除了更改當前簽出的分支外沒有其他任何操作;它根本不會觸及你的工作目錄。 – poke

1

繼續並創建新分支,它基本上將您當前分支上的內容「保存」到新分支。

切換回上一個分支並'撤銷'您最近的操作,將第一個分支恢復到您希望的位置,如果您在理想位置開始新分支。 (如果它只是一些事情 - 命令z,或者可能回到之前的提交,或者從Github上的最後一個版本重新提取)。然後git添加並提交第一個分支,然後您可以切換回第二個繼續工作。

也許不理想,但我用它作爲解決方法。

+0

似乎對我錯了。由於新的更改沒有提交,所以在前一個分支上沒有任何可撤消的內容。一旦'git checkout -b newname','git add '和'git commit'完成,提交就會進入新的分支。當你簽出前一個分支時,不應該有任何可撤銷的東西。 –

+0

但是爲了切換到新的分支,git會讓你添加並提交第一個分支。他們首先會是相同的內容。如果你想從第二個分支開始工作,那很好。但是如果您正在試驗並希望將第一個分支恢復到之前的工作點,則可以撤消並重新添加並重新提交。我可能是錯的 - 我對此很新。只是試圖提供我所經歷的。 – tpeters0

1

這裏重要的是:Git分支本身不包含任何文件或修訂版本。分支只是一些提交的指針。 當你創建一個新的分支時,它將提交指向當前分支。兩者將永遠(幾乎總是)共享共同的歷史,但可能會在創建後發生分歧。

分行帶來一些實用的功能:

  • 您可以通過它的名字簽出一個分支(但你也可以檢出由它的SHA1犯,並在許多其他方面)
  • 說,一個分支指向提交A.當您在該分支中運行git commit時,會創建一個新的提交B,該提交指向A.並且分支現在指向B,即新近提交的提交。
  • 分支可以更容易地查看開發路徑並將它們視爲抽象對象。
  • 分支可以更容易地合併修訂。 (雖然也可以合併原始提交)。

爲了更好地理解它們,我用了我自己的recommend you this course(對我推薦SO教程感到羞恥:) :)

相關問題