2011-12-21 191 views
1

我不清楚Git分支如何工作的基本原則。分支和Git合併

假設我在master分支(這是我的項目的主幹)上有一個回購,它在v 1.0。然後我決定我想創建一個experimental分支來做一些時髦的新東西,所以我從主分支中做git branch experimental並添加一些新功能,並將我的更改提交到experimental

我的合作伙伴去更新master分支到1.1版,我把他的修改放到我的master分支中。

experimental分支中未被修改爲experimental的所有v 1.0文件保持與最新的master文件(例如,成爲v 1.1)?

或者我需要將master分支合併到experimental以防止experimental分支中的所有未修改文件停留在v 1.0嗎?

如果是這樣,那麼將這些1.1更改合併到experimental而不污染master分支與我的時髦的新東西是什麼?

回答

2

將所有的1.0版文件在實驗的分支,不是由我的編輯修改,以與最新的主文件實驗逗留電流(如成爲v 1.1)?

否Git不會修改任何背後的文件。也許你想它保持在1.0;)

或者我是否需要將主分支合併到實驗中,以防止實驗分支中的所有未修改的文件停留在v 1.0?

正確。

如果是這樣,那麼將這些1.1版本的更改合併爲實驗的過程,同時不會污染我的時髦新東西的主分支?

$ git checkout experimental 
$ git merge master 
1

在您的實驗性分支,運行

git merge master 
+0

所以'git merge master'會將主分支中的所有新東西放到'experimental'分支中,而不會將任何'實驗性'分支變化放回'master'中?謝謝! – julio 2011-12-21 20:14:29

+0

是的,這是正確的。 – 2011-12-21 20:16:22

1

分行GIT中是重量很輕。這意味着它們只是指向特定提交的指針。提交通過父指針相互鏈接。這意味着如果你有一個特定的引用,你就不知道這些孩子(隨後的提交)。合併是與多個家長進行的。分支機構是碰巧由多個承諾的父母指出的承諾。每個提交還指向存儲庫中所有文件的快照。

這個提交網絡被稱爲DAG(有向無環圖)。

你可以閱讀更多關於它在這裏:

http://progit.org/book/ch9-2.html

這裏:

http://eagain.net/articles/git-for-computer-scientists/

一旦你理解了這一點,分支變得一清二楚! :)