【问题标题】:what does this git code that I use for merging my branch with master branch actually do?我用于将我的分支与主分支合并的这个 git 代码实际上是做什么的?
【发布时间】:2015-10-22 14:40:21
【问题描述】:

我刚开始了解并了解我的大部分使用方式,但是当我想合并到 master 并添加我的更改时,我不明白发生了什么。

这是我的流程:

首先我进行编辑并将它们提交到我的分支。然后我做

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

我正在切换回 my-branch(同样,不完全确定其含义)。

然后,最后,我将两者合并。

git merge master

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

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

【问题讨论】:

    标签: git github version-control merge


    【解决方案1】:
    git checkout master
    

    这将切换到master 分支。在my-branch提交但不在master 中的更改将被删除,在master 中但不在my-branch 中提交的更改将应用​​于存储库。是的,如果您现在开始更改和提交文件,您将更改 master

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

    git pull origin master
    

    这做了两件事:

    1. fetches 从origin 更改,即将它们下载到设置为跟踪远程分支的本地分支中。这个本地远程跟踪分支不是您通常会与之交互的东西,它由 git 自动处理。事实上,它甚至不会与 git branch --list 一起显示。
    2. merges 将这些更改为master。有时,如果 git 自己无法弄清楚如何安全地进行合并,您可能必须执行手动合并。

    请注意,这不会发起“拉取请求”。它被称为pull,因为它将远程更改拉入本地存储库。拉取请求只是要求其他人从您那里拉取。

    git checkout my-branch
    

    这和之前的结账一样,只是方向相反。

    git merge master
    

    这会将master 具有但my-branch 没有的所有更改合并到my-branch。因此,my-branch 拥有 master 的所有内容,但 master 没有my-branch 相比有任何新变化。

    【讨论】:

    • 这是什么意思? “在 my-branch 中但不在 master 中的更改将被删除,在 master 但不在 my-branch 中的更改将应用​​于存储库。”我仍然可以在文件夹中的文件中看到我在 my-branch 中所做的更改。还是我很困惑?
    • @PaulBailey 这些更改真的提交了吗?
    • @PaulBailey 我在顶部附近添加了一点。切换分支时未提交的更改会保留,但如果它们发生冲突,可能会阻止您切换分支。
    • @PaulBailey 哦,等等,你说他们承诺了。嗯……这很奇怪。稍后将不得不对此进行更多研究。可能值得在您的问题中添加该行为的最小示例。
    • 回头看,你是对的。对不起,我很困惑。
    猜你喜欢
    • 1970-01-01
    • 2023-01-30
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    相关资源
    最近更新 更多