我用来将我的分支与master分支合并的git代码实际上做了什么?

时间:2015-10-22 14:40:22

标签: git github version-control merge

我是新手,了解我使用它的大部分内容,但当我想合并到掌握并添加我的更改时,我不知道发生了什么。

这是我的流程:

首先,我进行编辑并将其提交给my-branch。然后我做

git checkout master
git pull origin master
git checkout my-branch
git merge master

所以我认为在第一行

git checkout master

我正在切换到主分支。我不完全确定这意味着什么。但我认为这意味着如果我在那时提交了一些内容,它将直接改变主人。我知道我的文件保持相同的形状并保持我的所有编辑。

然后,我不知道第二行

git pull origin master

在第三行

git checkout my-branch

我正在切换回我的分支(再次,并不完全确定其含义)。

然后,最后,我合并了两个。

git merge master

我不知道未合并文件的位置,但是当我在git网站上发起拉取请求时,我确实看到了不错的差异。

我也有点困惑,为什么我在网站上发起的是“拉取请求”,因为它看起来更像是一个提交。

1 个答案:

答案 0 :(得分:1)

git checkout master

切换到master分支。将删除my-branch中{em>已提交但master中未提及}的更改,并应用mastermy-branch中未提交的更改到存储库。是的,如果您现在开始更改和提交文件,您将改变master

请注意,您在my-branch尚未提交时所做的更改将会保留。如果您在分支中提交以切换到相同位置进行更改,则可能会导致冲突。如果存在冲突,git不会让您切换分支,直到您提交这些更改,或stash它们。

git pull origin master

这有两件事:

  1. fetch更改origin,即将其下载到设置为跟踪远程分支的本地分支。这个本地远程跟踪分支不是你通常会与之交互的东西,它由git自动处理。事实上,它甚至不会显示git branch --list
  2. merge将这些更改master。有时,如果git无法自行确定如何安全地执行此操作,则可能必须执行手动合并。
  3. 请注意,这并未启动"拉取请求"。它被称为pull,因为它将远程更改拉入本地存储库。拉取请求只是要求别人拉你。

    git checkout my-branch
    

    这与之前的结账相同,只是方向相反。

    git merge master
    

    这会将master所有但my-branch没有的更改合并到my-branch中。因此,my-branch包含master所有内容,但master my-branch进行任何新的更改。