【问题标题】:git create new non-tracking branch based on remote branchgit 基于远程分支创建新的非跟踪分支
【发布时间】:2015-02-25 01:25:37
【问题描述】:

情况:有多个分支的开源项目,我的 fork 用于贡献。 我想在 github 上为拉取请求创建一个新分支。我想将此分支基于开源项目的现有分支之一,但我不希望我的提交进入该原始分支。

根据我的经验,如果我克隆我的 fork,执行 git checkout -b my-branch origin/some-branch 然后提交+推送到 my-branch,在 Github 中提交将转到 some-branch 而不是 my-branch。显然,如果我想在同一个分支上为多个拉取请求创建多个分支,这是有问题的。

我找到的解决方法如下:

git checkout -b some-branch origin/some-branch

git checkout -b my-branch(基于 some-branch 的新分支,但不跟踪它)

之后 - 提交+推送,第一次推送将在 Github 上创建 my-branch

但是,这给我留下了一个额外的本地副本 some-branch。很明显,我可以稍后删除它,但是有没有办法完全避免创建它?有没有一种方法可以创建my-branch,基于origin/some-branch,但不跟踪它,在一个命令中,中间没有额外的分支?

【问题讨论】:

  • 您可能想发布您的 push.default 设置以及您的 Git 版本。这两者都会影响您在推送时看到的行为。

标签: git github version-control git-branch


【解决方案1】:

使用同一提交的 SHA1 哈希而不是 origin/some-branch。示例:

git checkout -b my-branch 92fc7a2

请记住,分支只是提交上的一个标签,仅此而已。这是一个 41 字节的文件,包含一个提交的 SHA1 哈希名称和一个换行符。

【讨论】:

  • 甚至git checkout -b my-branch origin/some-branch^{commit}
  • 什么提交?我问的是分支,而不是提交...... @jthill - 这不只是为跟踪分支指定一个特定的条目提交吗?我根本不想跟踪那个分支。
  • 分支或远程分支只是提交上的一个标签。如果您设置一个引用这些的新分支,则会设置跟踪。如果直接引用提交,新分支将不会跟踪任何远程分支。
  • “这是一个 41 字节的文件,包含提交的 SHA1 哈希名称和换行符。” 这正是您不必担心 “但是,这给我留下了 some-branch 的额外本地副本。”
  • @SzG 实际上并不知道 :-) 编辑等等,我想我知道——让自己进入另一个 SE 站点。那时我为另一个 git 问题添加了程序员。
猜你喜欢
  • 2014-02-04
  • 2019-08-14
  • 2010-10-05
  • 2014-08-22
  • 2012-07-01
  • 2019-09-30
  • 1970-01-01
  • 2016-04-04
相关资源
最近更新 更多