我想创建新分支“B”。目前,我有一个主分支(本地和远程)和功能分支“A”(本地)。功能分支(A)在远程被删除。另外,我在本地功能分支中有一些已提交的文件和未暂存的文件。我想转到 master 而不丢失任何更改,并创建另一个分支,首先提交该分支,然后提交我的新更改。我该如何做?
wz8daaqr1#
1.存储电流变化git stash
git stash
git checkout master
git checkout -b <newbranchname>
git merge <initialbranch>
git stash pop
8ehkhllq2#
在某些地方您写了未跟踪的更改,而在某些地方您写了未暂存的更改。这是两件不同的事情,应该以不同的方式处理。如果您有跟踪的但未暂存的更改,您应该在 checkout 新分支之前git stash您的更改,并在将A合并到新分支之后git stash pop它们。对于未跟踪的更改,另一种确保它们也被隐藏起来并将它们应用到新分支的方法是使用git stash和-u标志,它也隐藏未跟踪的更改。
A
-u
git branch newBranch master git stash -u git checkout newBranch git merge A git stash pop git add && git commit
我相信您尝试达到的状态如下:
master
B
git checkout
git branch newBranch master
git checkout newBranch
git merge A
git add
git commit
git checkout A
bmvo0sr53#
简单的答案是使用下面的代码从 master 创建一个新的分支,而不进行切换。
或者,你可以使用git stash或者更彻底的git stash save "name description"来保存你的代码到一个伪提交中。
git stash save "name description"
3条答案
按热度按时间wz8daaqr1#
1.存储电流变化
git stash
git checkout master
1.创建新分支
git checkout -b <newbranchname>
现在我有点搞不清楚你要把当前分支提交到哪里,我假设你要把它提交到你在#3中创建的新分支。
1.将初始分支中的更改合并到新分支
git merge <initialbranch>
1.从stash
git stash pop
检索存储的更改1.添加本地更改并提交
8ehkhllq2#
在某些地方您写了未跟踪的更改,而在某些地方您写了未暂存的更改。这是两件不同的事情,应该以不同的方式处理。如果您有跟踪的但未暂存的更改,您应该在 checkout 新分支之前
git stash
您的更改,并在将A
合并到新分支之后git stash pop
它们。对于未跟踪的更改,另一种确保它们也被隐藏起来并将它们应用到新分支的方法是使用
git stash
和-u
标志,它也隐藏未跟踪的更改。我相信您尝试达到的状态如下:
master
分支保持不变1.功能分支
A
保持不变1.有一个从master分支出来的新分支
B
,它包含来自分支A
的已提交和未跟踪的更改第一,注意:当您使用
git checkout
checkout 一个不同的分支或提交时,或者当您执行操作其他分支的命令时,您之前 checkout 的分支/提交上的任何提交都不会丢失,并且您可以随时再次使用git checkout
返回到该提交。此外,未被跟踪的文件不会被修改,除非它们在您 checkout 的提交/分支中被跟踪。现在,我将使用以下命令:
git branch newBranch master
以从master
分支创建新分支。git checkout newBranch
checkout 新创建的分支。请记住,未被跟踪的文件不会被修改,除非他们在新的分支上被跟踪,从你的描述,我知道他们没有。还请记住,无论是在分支A
提交将留在那里,不会丢失切换到另一个分支。git merge A
,将已提交得更改从分支A
合并到新分支.git add
和git commit
,以加入未追踪的变更,并将它们认可至新分支。最后,您可以继续在新分支上工作,或者如果您想返回到分支
A
,则可以执行git checkout A
返回。注意,由于在分支A
上未跟踪的更改现在在分支B
上被跟踪,如果您再次更改它们并 checkoutB
,您将获得从A
新更改之前的版本。bmvo0sr53#
简单的答案是使用下面的代码从 master 创建一个新的分支,而不进行切换。
或者,你可以使用
git stash
或者更彻底的git stash save "name description"
来保存你的代码到一个伪提交中。