建立新分支

时间:2019-09-20 16:20:48

标签: git github

我想创建新的分支'B'。目前,我有一个主分支(本地和远程)和功能分支-'A'(本地)。远程删除功能分支(A)。另外,我的本地功能分支中有一些已提交和未暂存的文件。我想在不丢失任何更改的情况下成为高手,并创建另一个分支,首先提交该分支,然后提交我的新更改。我能怎么做?请提出建议。

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

edit:现在,我看到您在某些地方写到您有未跟踪的变更,而在某些地方写了未上演的变更。这是两个不同的事物,应该以不同的方式处理。如果您已跟踪但未暂存更改,则应git stash进行更改,然后签出新分支,并在将git stash pop合并到新分支后A

edit 2:对于未跟踪的更改,另一种确保未隐藏的更改也可以仅将其应用于新分支的方法是使用带有标志git stash的{​​{1}},这也会存储未跟踪的更改。在这种情况下的流量将是

-u

根据您在评论中提供的其他信息,我认为您要达到的状态如下:

  1. git branch newBranch master git stash -u git checkout newBranch git merge A git stash pop git add && git commit 分支保持不变
  2. 功能分支master保持不变
  3. 有一个新分支A从master分支出来,其中包含来自分支B的已提交和未跟踪的更改

首先,我想根据您可能没有意识到的后续问题来澄清一些我认为的事情:使用A签出其他分支或提交,或执行命令时操纵其他分支,您先前签出的分支/提交上的任何提交都不会丢失,您可以随时再次使用git checkout返回到分支。此外,除非在您检出的提交/分支中对未跟踪的文件进行跟踪,否则将不会对其进行修改。

现在,要解决您的问题,我将使用以下命令: 1. git checkoutgit branch newBranch master分支创建一个新分支。
2. master签出新创建的分支。请记住,除非在新分支上对未跟踪的文件进行跟踪,否则将不会对其进行修改,根据您的描述,我知道它们不会被修改。另外请记住,在分支git checkout newBranch上提交的任何内容都将保留在那里,并且不会因切换到另一个分支而丢失。
3. A将合并的更改从分支git merge A合并到新分支。
4. Agit add添加未跟踪的更改,并将其提交到新分支。

最后,您可以继续在新分支上工作,或者如果您想返回分支git commit,则可以执行A返回。请注意,由于现在在分支git checkout A上跟踪了分支A上未跟踪的更改,因此,如果再次更改它们并检出B,您将在{{ 1}}。

答案 2 :(得分:0)

简单的答案是使用以下内容从master创建新分支,而无需切换。

Hello World! My name is fred

git分支接受源分支的第二个参数。

或者,您可以使用git branch newBranch master 或更彻底地使用git stash将代码保存为伪提交。这不会处理未跟踪的文件。