【问题标题】:What branch GIT considers as source branch while creating new branch?GIT 在创建新分支时将哪个分支视为源分支?
【发布时间】:2018-10-22 23:03:26
【问题描述】:

我是 GIT 新手,正处于 GIT 概念的学习阶段。我有两个简单快速的问题。

第一季度。每当我们想创建一个新分支时,我们输入以下命令:

git checkout -b BranchName

在这里,我的问题是git checkout 在创建新分支时考虑哪个分支作为它的源分支?

  • 是否将master 分支视为源分支?
  • 是否将当前分支视为源分支?

第二季度。假设,它正在考虑作为源分支的任何分支都不是最新的远程。因此,在从该源分支创建一个新分支时,它是否会为源分支创建一个拉取然后创建新分支,或者它认为本地分支是它的基础并且不从服务器拉取任何东西?

【问题讨论】:

  • 您将从当前分支创建一个分支,如果它不是最新的,您的新分支也不会有任何新提交。所以首先在您当前的分支上git pull - 然后创建一个新分支。
  • 好的..所以这意味着源分支将是我当前的分支,最佳实践是首先拉出您当前的分支然后创建新分支。但我没有明白你的意思“如果它不是最新的,你的新分支也不会有任何新的提交”。你能解释一下吗?
  • 假设您的分支 A 具有提交 #1、#2、#3(虚构哈希)。这是您当地的分支机构。您的团队成员添加新内容并推送到遥控器。这将是提交 #4。在git pull 之前,您的本地分支中没有它。因此,如果您创建一个新分支B 并且不首先在 A 上执行 git pull,那么您将不会在 B 中获得最新更改(#4),因为您的本地 A 将用作源并且它不是最新的遥控器。这有意义吗?)
  • 哦...多好的解释@john...非常感谢...:)
  • 你认为“源分支”是什么意思?它在 Git 中没有任何意义。

标签: git github version-control version


【解决方案1】:

没有源分支的概念。分支就是我们所说的“ref”,指向提交的指针。

因此,当您创建分支时,该分支指向您所在的提交(或间接指向您所在的当前分支指向的第一个提交)。

如果您没有通过 has 或 refspec 指定特定提交,git 将使用您可以通过命令获得的以下哈希在提交上创建分支:

git rev-parse HEAD

【讨论】:

    【解决方案2】:

    它会将你当前的分支视为源或使用另外一个 arg:

    git checkout -b BranchName StartPoint
    

    注意:下面我回答Q2:

    如果起点不是最新的并且您没有在本地提交任何内容,您可以拉取,否则您可以重新设置它(或者您可以合并,仍然使用拉取)。 git fetch --all 从远程刷新历史记录 你可能落后了一些提交。然后git rebase origin/master(或任何分支)更新它并将你的提交放在首位。

    【讨论】:

    • Fetch != pull != rebase.
    • 首先你必须获取。为了从远程检索历史记录。然后你必须变基,以便通过添加你最终从远程错过的提交来更新并将你的添加到顶部。最后你可以变基。
    • 你也可以在没有变基的情况下拉取:stackoverflow.com/q/18930527.
    • 感谢您回答我的第一个问题。其次,我认为最好的做法是先拉出分支以使其保持最新状态,然后再创建一个新分支。
    • 好吧,当你自己并没有真正在本地提交任何东西时,你就拉了。
    猜你喜欢
    • 2015-04-06
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 2020-12-01
    • 2011-05-27
    • 1970-01-01
    相关资源
    最近更新 更多