git 创建 新 分支

zsbz8rwp  于 2022-11-20  发布在  Git
关注(0)|答案(3)|浏览(141)

我想创建新分支“B”。目前,我有一个主分支(本地和远程)和功能分支“A”(本地)。
功能分支(A)在远程被删除。另外,我在本地功能分支中有一些已提交的文件和未暂存的文件。我想转到 master 而不丢失任何更改,并创建另一个分支,首先提交该分支,然后提交我的新更改。我该如何做?

wz8daaqr

wz8daaqr1#

1.存储电流变化git stash

  1. checkout 主文件git checkout master
    1.创建新分支git checkout -b <newbranchname>
    现在我有点搞不清楚你要把当前分支提交到哪里,我假设你要把它提交到你在#3中创建的新分支。
    1.将初始分支中的更改合并到新分支git merge <initialbranch>
    1.从stash git stash pop检索存储的更改
    1.添加本地更改并提交
8ehkhllq

8ehkhllq2#

在某些地方您写了未跟踪的更改,而在某些地方您写了未暂存的更改。这是两件不同的事情,应该以不同的方式处理。如果您有跟踪的但未暂存的更改,您应该在 checkout 新分支之前git stash您的更改,并在将A合并到新分支之后git stash pop它们。
对于未跟踪的更改,另一种确保它们也被隐藏起来并将它们应用到新分支的方法是使用git stash-u标志,它也隐藏未跟踪的更改。

git branch newBranch master
git stash -u
git checkout newBranch
git merge A
git stash pop
git add && git commit

我相信您尝试达到的状态如下:

  1. master分支保持不变
    1.功能分支A保持不变
    1.有一个从master分支出来的新分支B,它包含来自分支A的已提交和未跟踪的更改
    第一,注意:当您使用git checkout checkout 一个不同的分支或提交时,或者当您执行操作其他分支的命令时,您之前 checkout 的分支/提交上的任何提交都不会丢失,并且您可以随时再次使用git checkout返回到该提交。此外,未被跟踪的文件不会被修改,除非它们在您 checkout 的提交/分支中被跟踪。
    现在,我将使用以下命令:
  2. git branch newBranch master以从master分支创建新分支。
  3. git checkout newBranch checkout 新创建的分支。请记住,未被跟踪的文件不会被修改,除非他们在新的分支上被跟踪,从你的描述,我知道他们没有。还请记住,无论是在分支A提交将留在那里,不会丢失切换到另一个分支。
  4. git merge A,将已提交得更改从分支A合并到新分支.
  5. git addgit commit,以加入未追踪的变更,并将它们认可至新分支。
    最后,您可以继续在新分支上工作,或者如果您想返回到分支A,则可以执行git checkout A返回。注意,由于在分支A上未跟踪的更改现在在分支B上被跟踪,如果您再次更改它们并 checkout B,您将获得从A新更改之前的版本。
bmvo0sr5

bmvo0sr53#

简单的答案是使用下面的代码从 master 创建一个新的分支,而不进行切换。

git branch newBranch master
  • git分支 * 接受源分支的第二个参数。

或者,你可以使用git stash或者更彻底的git stash save "name description"来保存你的代码到一个伪提交中。

相关问题