GIT 在创建新分支时将哪个分支视为源分支?
Posted
技术标签:
【中文标题】GIT 在创建新分支时将哪个分支视为源分支?【英文标题】:What branch GIT considers as source branch while creating new branch? 【发布时间】: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 中没有任何意义。
【参考方案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. 首先你必须获取。为了从远程检索历史记录。然后你必须变基,以便通过添加你最终从远程错过的提交来更新并将你的添加到顶部。最后你可以变基。 你也可以在没有变基的情况下拉取:***.com/q/18930527. 感谢您回答我的第一个问题。其次,我认为最好的做法是先拉出分支以使其保持最新状态,然后再创建一个新分支。 好吧,当你自己并没有真正在本地提交任何东西时,你就拉了。以上是关于GIT 在创建新分支时将哪个分支视为源分支?的主要内容,如果未能解决你的问题,请参考以下文章