创建没有本地提交的新分支

Create new branch without local commits

我在当前分支 "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 的新分支,该分支不应包含任何更改 - 例如"test" 提交的更改(意味着以上 3 个文本文件都不包含任何内容)并推送到远程。

我们有什么可以做的吗?

是的,这是可能的。

这是你的 git 树:

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

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

创建一个新分支
git checkout -b "new-branch"

这将创建:

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

这是基本的 git。您根据提交 ID 创建分支。甚至可以从提交 ID 创建 branch/tag/etc。检查 here

创建新分支后,您可以使用

推送它
git push --set-upstream origin new_branch

I want to create a new branch called "bar" from my current branch.

But the new branch should not contain any changes which are in my current branch.

由于您指定不希望 local 在 foo 中提交,但您 希望 包含那些在远程分支上的内容,您不应从本地分支 foo 创建分支 bar,而应从远程 foo 分支创建分支:

git checkout -b bar origin/foo

这将在您的原始存储库中 foo 的当前状态创建分支 bar,即不包含 foo.

上的本地提交

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