【问题标题】:Create new branch without local commits创建没有本地提交的新分支
【发布时间】:2019-06-28 00:35:10
【问题描述】:

我在当前名为“foo”的分支中进行了一些更改。

我想从当前分支创建一个名为“bar”的新分支。

但新分支不应包含我当前分支中的任何更改(我本地系统中的已提交更改)。

例子

$ git clone ssh://svc@somerepo.git
$ cd somerepo
$ ls
test1 test2 test3
$ cat test1 test2 test3
< no output, all these 3 files are empty >
$ echo "testing" >> test1
$ git commit -am "test"

现在我需要从当前分支创建一个名为 new-branch 的新分支,该分支不应包含任何更改 - 例如“测试”提交的更改(意味着所有上述 3 个文本文件都不包含任何内容)并推送到远程。

我们有什么办法吗?

【问题讨论】:

    标签: git github branch


    【解决方案1】:

    在 Github 上,输入你想要的新分支名称,系统会询问你——从哪个分支创建这个新分支

    【讨论】:

      【解决方案2】:

      我想从当前分支创建一个名为“bar”的新分支。

      但新分支不应包含我当前分支中的任何更改。

      由于您指定不希望 本地 在 foo 中提交,但您希望将这些提交包含在远程分支上,因此不应创建分支 bar来自本地分支foo,但来自远程foo 分支:

      git checkout -b bar origin/foo
      

      这将在您的原始存储库中foo 的当前状态上创建分支bar,即不包含foo 上的本地提交。

      【讨论】:

      • 我也不想基于 master 创建分支。因为我们在 foo 分支中做了很多改变。我只是不希望我的本地提交成为新分支的一部分。
      【解决方案3】:

      是的,这是可能的。

      这是你的 git 树:

      ----A---*            <---master
      

      Commit A 已提交 3 个空文件。目前您已对文件test1 进行了更改,但尚未提交。所以在这种情况下你只需要使用命令创建一个新分支

      git checkout -b "new-branch"
      

      这将创建:

            ---*            <---master
           /
      ----A                 <--- new-branch
      

      这是基本的 git。您从提交 ID 创建分支。甚至可以从提交 ID 创建分支/标签/等。检查here

      一旦你创建了你的新分支,你就可以使用它来推送它

      git push --set-upstream origin new_branch
      

      【讨论】:

      • 不,如果您在我的问题中看到我的示例,我已经提交了更改。我只不希望在我的新分支中没有被推送到远程分支的本地提交。
      • @smc 哦,我的错。错过了
      猜你喜欢
      • 2020-03-01
      • 2017-12-02
      • 2020-07-07
      • 2014-02-08
      • 2021-10-15
      • 1970-01-01
      • 2018-05-03
      • 1970-01-01
      • 2017-09-07
      相关资源
      最近更新 更多