创建一个新分支

Vip*_*pul 5 git github

我想创建新分支“B”。目前,我有一个主分支(本地和远程)和功能分支“A”(本地)。

功能分支(A)已在远程删除。另外,我的本地功能分支中有一些已提交的文件和未暂存的文件。我想在不丢失任何更改的情况下进入master并创建另一个分支,首先提交该分支,然后提交我的新更改。我该怎么做?

alo*_*n-k 6

在某些地方您写道您有未跟踪的更改,而在某些地方您则写道您有未暂存的更改。这是两件不同的事情,应该以不同的方式处理。如果您已跟踪但未暂存的更改,则应该git stash在签出新分支之前进行更改,并git stash pop在合并A到新分支之后进行更改。

对于未跟踪的更改,确保它们也被隐藏然后将它们应用到新分支的另一种方法是git stash与 flag 一起使用-u,它也隐藏未跟踪的更改。这种情况下的流程是:

git branch newBranch master
git stash -u
git checkout newBranch
git merge A
git stash pop
git add && git commit
Run Code Online (Sandbox Code Playgroud)

我相信您想要达到的状态如下:

  1. master分支保持不变
  2. 功能分支A保持不变
  3. 有一个B从 master 分支出来的新分支,其中包含分支中已提交和未跟踪的更改A

首先,请注意:当您用于git checkout签出不同的分支或提交时,或者当您执行操作其他分支的命令时,您之前签出的分支/提交上提交的任何内容都不会丢失,您可以在任何时候git checkout再次使用。此外,未跟踪的文件不会被修改,除非它们在您正在签出的提交/分支中被跟踪。

现在,我将使用以下命令:

  1. git branch newBranch master在分支外创建一个新分支master。
  2. git checkout newBranch签出新创建的分支。请记住,除非在新分支上跟踪未跟踪的文件,否则不会修改它们,从您的描述中我了解到它们不是。还要记住,在分支上提交的任何内容都A将保留在那里,并且不会因切换到另一个分支而丢失。
  3. git merge A将分支中提交的更改合并A到新分支。
  4. git add并git commit添加未跟踪的更改并将其提交到新分支。

最后,您可以继续在新分支上工作,或者如果您想返回分支A,您可以执行git checkout A返回。请注意,由于在分支上未跟踪的更改A现在在分支上进行了跟踪B,因此如果您再次更改它们并签出,B您将获得新更改之前的版本A。


小智 5

  1. 隐藏当前更改 git stash
  2. 结帐大师 git checkout master
  3. 创建新分支 git checkout -b <newbranchname>

此时,我对您想要将当前分支提交到哪里感到有点困惑。我假设您正在尝试将其提交到您在 #3 中创建的新分支。

  1. 将初始分支的更改合并到新分支 git merge <initialbranch>
  2. 从存储中检索存储的更改 git stash pop
  3. 添加您的本地更改并提交