git - 分支和提交有什么区别?

标签 git github netbeans version-control

我从 GitHub 的基础开始,因为我必须作为一名程序员工作,其他人告诉我如何在 NetBeans 中创建/克隆目录并提交/分支项目;但我并不完全理解提交和分支之间的区别。就像你在这里看到的:

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

By default your repository has one branch named master which is considered to be the definitive branch. We use branches to experiment and make edits before committing them to master.

When you create a branch off the master branch, you’re making a copy, or snapshot, of master as it was at that point in time. If someone else made changes to the master branch while you were working on your branch, you could pull in those updates.

我知道我有一个名为 master 的分支,它是我可以在 NetBeans 中单击我的 NetBeans 项目创建的最终分支和其他分支。我知道如何在 NetBeans 中执行此操作,但我不明白分支和提交之间的区别。

在将我的项目与 master merge 之前,我可以使用分支在我的代码中进行一些实验或更改以查看结果。也许我正在对我的代码进行一些更改,但我得不到我想要的,这是在进行分支时进行一些测试以查看结果的最佳时机。

我无法理解这一点:

“如果您在分支上工作时其他人对 master 分支进行了更改,您可以引入这些更新。”

我无法阅读有关 Git 的书,因为我没有时间阅读,但我对 Git (GitHub) 有一些疑问。

我的老师在工作中向我解释说,你必须在提交之前进行分支。

最佳答案

在 Git 中,“分支”可以被认为是指向提交的指针。通常,人们还会使用术语“分支”来指代所指向的提交及其所有祖先所包含的提交集(有时这种双重含义会导致混淆)。

“提交”是代码的保存版本。提交排列在树中,其中每个提交(第一个提交除外)都有一个或多个祖先提交。

严格来说,“分支”只是添加一个新指针并将其指向某个提交。 “分支”不会以任何方式更改提交树(它添加提交)。然而,人们经常使用这个术语来表示分支和提交。

“提交”向提交树添加一个节点。当您执行基本提交时,Git 还会重新指向您当前使用的分支以指向新提交。

如果有人告诉你“分支”,他们就是在告诉你

  1. 创建一个新分支,指向您的更改所基于的提交
  2. checkout 你的新分支(这通常使用与上一步相同的命令完成)
  3. 提交您的更改(同时仍在您刚刚 checkout 的新分支上)

例如,要从 master 分支出来,请执行以下操作:

git checkout master

(代码……代码……代码……)

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

现在 new_branch 指向一个新的提交,它的祖先是 master 指向的提交。

你还问这个说法:

"If someone else made changes to the master branch while you were working on your branch, you could pull in those updates."

假设您刚刚按照上面的示例进行操作,然后在有人对 master 分支进行了一次提交后您fetch master。现在你在分支中有了一个分支。一个提示是 new_branch,另一个提示是 master。然后您可以 merge 这两个分支(即创建一个由两个分支指向的新提交,关闭 fork )。或者,您可以使用 pull 来执行相同的操作,但一步完成。

关于git - 分支和提交有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43813582/

相关文章:

git - 为什么 git 不知道我 merge 了?有没有办法告诉它?

git - 从 git 存储库中删除特定分支的整个历史记录

Git:在提交并推送到远程存储库之前检查可能的冲突

r - httr github-API 回调 URL 问题

git - rebase 单个 Git 提交

git - 裸存储库中的文件在哪里?

ruby - 你能在公共(public)仓库上用 github 添加一个 webhook 通知吗?

java - 如何设置 Netbeans 以便轻松地与 Play Framework 2.0 配合使用

netbeans - 计算 Netbeans 中的总行数

java - 为 webapp 创建 jar