2015-11-02 86 views
0

我正在學習Git。當我創建一個新的(空的)分支時,簽出它並列出它的內容,它顯示來自主分支(我認爲我已經離開)的所有文件。爲什麼是這樣?新的,可能是空的Git分支中的現有文件?

+4

master的分支應包含master分支中的所有文件。如果我創建一個新的分支'new-feature',那麼它將具有來自先前分支的所有已提交和未提交的文件。 –

+0

謝謝,這解釋了它。 – eabates

+0

我很高興幫助!我從這篇文章中學到了很多關於Git中的提交,分支以及其他所有內容的知識:http://maryrosecook.com/blog/post/git-from-the-inside-out –

回答

2

無論您何時結賬至新分行,例如:git checkout -b my-new-branch,您當前所在分行的所有內容也將存在於您的新分行中。

如果您正在創建一個新分支,爲了啓動一個新項目,您應該很可能會創建一個新的項目/存儲庫。當您想要在項目的特定部分工作時使用分支,但是將其與項目的主要部分保持隔離直至完成,並且可以將分支合併到一起。

+0

明白了,有道理我猜因爲這個詞是「分支」。 – eabates

1

你不(通常)簽出一個新的空分支。你創建一個新的分支,在當前提交時開始。它也不會觸及索引或工作目錄,因此所有尚未提交的修改都顯示在git status中。

4

您運行的命令 - 無論它是多少,都有多個 - 不會創建新的空分支。它創建一個新的分支,基於與之前分支完全相同的歷史記錄,允許您從該分支轉移。

如果您確實想創建一個全新的分支而沒有任何現有分支的共享歷史記錄,請查看git checkout--orphan選項。

1

我想你剛剛提到的是預期的行爲。 如果您從非空分支創建新分支,它將包含該分支的所有文件+未完成的更改。
在這種狀態下,你的新分支甚至與主人(擁有主人所有的提交)。
由於您將更改提交到新分支,因此與主分支會有所不同。

我猜,你想用的下列選項之一進行:

  1. 創建新的分支
  2. 提交更改
  3. 合併掌握

或者,如果你想做一些不同的事情,而不是改變你當前的項目,你應該創建一個新的存儲庫。

相關問題