git:将当前分支中当前未提交的正在进行的工作提交到新分支

git:将当前分支中当前未提交的正在进行的工作提交到新分支,git,version-control,Git,Version Control,有时我会发现自己处于以下情况: 我正在处理分支(比如master),我正在编辑一些文件,但是当提交的时候,我意识到我更喜欢提交到一个新的分支(比如实验性的)。换句话说,旧分支(主分支)必须保持完整,并且应创建一个新分支,其外观如下所示: .. -- master -- new commit 最简单的方法是什么 目前,我提交到旧分支,然后创建新分支,最后重置旧分支。但是这真的很难看。如果先创建新分支,会稍微容易一些: $ git checkout -b new_branch $ git comm

有时我会发现自己处于以下情况: 我正在处理分支(比如master),我正在编辑一些文件,但是当提交的时候,我意识到我更喜欢提交到一个新的分支(比如实验性的)。换句话说,旧分支(主分支)必须保持完整,并且应创建一个新分支,其外观如下所示:

.. -- master -- new commit
最简单的方法是什么


目前,我提交到旧分支,然后创建新分支,最后重置旧分支。但是这真的很难看。

如果先创建新分支,会稍微容易一些:

$ git checkout -b new_branch
$ git commit
git checkout-b branch#从当前head创建新分支
git add#您在工作目录中所做的更改将被保留
git commit-m“message”#commit!

另一种可能性是,您可以继续并将它们提交给
分支,然后从新的
头部
切断另一个分支(比如
功能
)。完成此操作后,您可以将git重置到提交之前的位置

问题中提到了这一点,“但当需要提交时,我意识到我更愿意提交到一个新分支”@user1004474-试试看。当您切换分支时,未分级和阶段更改都将出现。是的,您是对的,我认为签出将放弃所有更改。这很让人困惑,有时同一个git命令做不同的事情。如果我能做一些类似于:git commit-b new_branch……的事情,那就太好了……好吧,我是一个初学者,我想你应该在做一些更改之前创建一个新的分支!在本例中,user1004474已经进行了更改!所以我很困惑。看,我和用户1004474有同样的疑问d关键是我没有提前计划,所以先做了更改(可能是用git add将部分内容添加到索引中),然后我决定进行分支。@user1004474:它仍然有效。您可以运行一个
git checkout-b new_branch
,无论您是否有更改以及是否已将更改添加到索引中。如果确定可能重复,您当前未阅读
,我将提交到旧分支,然后创建新分支,最后重置旧分支。但那真的很难看。
那么,是的。我错过了。我不认为这是丑陋的,虽然FWIW.Get使它容易做,但它是丑陋的
git checkout -b branch       # create new branch out of current head
git add <files>              # the changes you had done in your working directory will be carried over
git commit -m "message"      # commit!