2017-05-05 379 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更改它到远程存储库(可以有一堆本地提交)。