2017-05-05 383 views
2

我與GitHub上的基礎知識開始,因爲我作爲一個程序員的工作和其他人告訴我關於創建/在Netbeans和commiting克隆目錄/分支項目之間的區別;但我不完全理解commit和branch之間的區別。就像你可以在這裏看到:。什麼是分支和commiting

https://guides.github.com/activities/hello-world/

「默認情況下你的資料庫有一個分支,它被認爲是明確的分支命名的主我們用樹枝進行實驗,並將其提交到主前進行編輯

當您創建關閉主分支的分支,你正在做一個複製或快照的師傅,因爲它是在該時間點。如果有人的時候在你的分支工作的其他人修改了主分支,你可以吸引那些更新。「

我明白,我有一個名爲master分支是明確的分支,我也可以在Netbeans的創建點擊我的Netbeans項目等分支機構。我知道如何在Netbeans中做到這一點,但我不明白分支和提交之間的區別。我可以使用分支在我的代碼中進行一些實驗或更改,以便在將我的項目與主服務器合併之前查看結果。也許我正在處理代碼中的一些更改,但是我無法得到我想要的結果,這是進行分支時查看結果的一些測試的最佳時機。

而且我無法理解這一點: 「如果有人在您的分支上工作時對主分支進行了更改,則可以引入這些更新。」

我不能讀一本關於Git的書,因爲我沒有時間去做,但是我有一些與Git(Github)有關的問題。

我的老師在工作中解釋說我必須在提交之前進行分支。

+0

實際上有與精確,分支*是什麼,*一些相當深刻的哲學問題,以及分支是否可以不提交和/或反之亦然存在。但是,由於您沒有時間閱讀一本書,所以我不會在書中指出您的意思。 – torek

+0

在開始試圖找出如何與遠程存儲庫進行交互(拉動,抓取等)之前,弄清楚事情在單個本地存儲庫中如何工作。 – user2141130

+0

Pro Git是非常好的資源,可以在線免費使用。你不需要閱讀整個事情。選擇並選擇在任何特定時刻有用的信息。你會發現前三章包含了你需要的90%。 –

回答

1

嗯....提交意味着「創建一個修訂」,通常在一個分支上(但這不是強制性的)。分支(在git中)只是指向修訂的指針。當人們談論「分支」時,他們的意思是創建分支,然後合併/重新組合/無論他們混合來自不同人員/分支的代碼。要明白,在分佈式VCS是非常重要的,你是總是工作不同分支,當人們在不同的工作回購(即使他們正在對具有相同名稱的一個分支)。

1

一個提交就像一個日記條目;一個分支就像擁有第二本日記。

一個提交標記一個時間點,一個狀態,一條記錄。你在一個項目的整個生命週期中做出很多的承諾。分支就像是一份重複的日記,您可以在將它們全部合併回主日記之前編寫第一份草稿(master)。

3

在git中,「分支」可以被認爲是指向提交的指針。通常,人們也將使用術語「分支」來指代集科提交被指出和其所有祖先包括提交的(有時這雙重含義造成混亂)。

「提交」是代碼的已保存版本。提交被安排在一個樹中,每個提交(除了第一個提交)都有一個或多個祖先提交。

嚴格地說,「分支」只是添加一個新的指針,並指向某個提交。 「分支」不會以任何方式更改提交樹(它不會添加提交)。但是,人們經常使用這個術語來表示分支和提交。

「提交」將節點添加到提交樹中。當你執行一個基本的提交時,git也會重新指向你當前使用的分支來指向新的提交。

如果有人告訴你「分支」,他們告訴你

  1. 創建一個新的分支指向提交修改是基於
  2. 結帳新的分支(這通常是用相同的命令之前的步驟)
  3. 提交更改(同時還對新的分支剛剛簽出)

如做岔開高手,這樣做:

git checkout master 

(代碼... ...代碼代碼...)

git checkout -b new_branch 
git commit -am'commit message for new branch' 

現在new_branch指向一個新的提交,其祖先的承諾那master指向。

你也問這樣一句話:「如果在你在你的分支工作別人做的主分支的變化,你可以拉這些更新」

假設你剛剛按照上面的例子,然後你有人向主分支提交了一個單一的提交後,你主人fetch。現在你在分支上有一把叉子,其中一個是new_branch,另一個是master。然後你可以在merge這2個分支(即,使兩個分支指向一個新的提交,關閉分支)。或者,您可以使用pull,它可以在一個步驟中執行相同的操作。

-2

我瞭解以下內容:

  1. 每個人都是一個分支。如果有3人,則會有3個分支。
  2. 一個人創建了一個與他的回購相關的分支,然後他/她在他自己的分支上修改了他的代碼。但是你必須做出承諾?,我的老師向我解釋說,在做了一些改變之後,在一個分支中工作,你必須在Netbeans中進行提交(存在這種可能性)。
+0

每個人都不是一個分支。分支機構的數量與人數幾乎沒有關係。通常情況下,除了「origin」存儲庫之外,每個人都有一個克隆,並且每個克隆可以擁有「起源」中分支的副本以及零個或多個本地分支。但即使如此,也會有很多光彩。 –

+0

不要將庫管理器的策略與git的功能混淆。存儲庫管理員可能有一個策略,每個團隊成員只有一個分支,但通常情況並非如此。此外,您可以根據需要在本地存儲庫上創建儘可能多的分支 - 只需不要推送它們即可。 http://stackoverflow.com/questions/43813582/whats-the-difference-between-branching-and-commiting/43813949#43813949 – user2141130

1

git的想法之一是有一個穩定版本(分支)其中f.e.你可以展示給你的客戶,另外一個在那裏你會嘗試新的功能,應用測試等

當你要實現一個新的功能,你的應用程序你通常會創建一個新的分支該功能/一堆功能。然後你努力工作,讓它閃耀。在您合併它到(主)分支將其顯示給您的客戶。
enter image description here 在此圖片上,每個紅色點都是承諾(更改)到存儲庫,您在開發過程中逐一更新您的應用程序。
雖然圖片上的每個新行級別都是分支。最上面的一個是主而2對低級那些已經爲新功能製成。你讓一個提交一個接一個(這也可以在主分支)儘可能的代碼被改變。你已經完成了一個新功能後,最後你做合併到主分支(這是在圖片上也顯示 - 看主分支的第5點)。

在一句簡單的話,你應用到應用程序的每一個變化被稱爲提交。如果您使用GitKraken,Tower,GitHub DeskTop等桌面用戶界面Git客戶端(在此列出更大的列表https://git-scm.com/downloads/guis),則通常會將提交提交到本地存儲庫,然後將提交提交到本地存儲庫後, cll更改它到遠程存儲庫(可以有一堆本地提交)。