创建没有本地提交的新分支
Posted
技术标签:
【中文标题】创建没有本地提交的新分支【英文标题】: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 个文本文件都不包含任何内容)并推送到远程。
我们有什么办法吗?
【问题讨论】:
【参考方案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 哦,我的错。错过了以上是关于创建没有本地提交的新分支的主要内容,如果未能解决你的问题,请参考以下文章