我开始研究一个新特性,在编码了一段时间后,我决定这个特性应该属于自己的分支。

如何将现有未提交的更改移动到新分支并重置当前分支?

我想重置当前分支,同时保留新功能的现有工作。


当前回答

对于那些使用Visual Studio Community 2022(以及可能更早的版本)的用户,当您有未提交的更改,然后创建一个新分支时,您将看到如下对话框:

只需选择第一个选项将更改带到“[您的新分行名称]”,然后单击“继续签出”。将创建新分支,您可以继续在那里提交更改。

其他回答

常见的情况如下:我忘记为新功能创建新分支,而在旧功能分支中执行所有工作。我已将所有“旧”工作交给了主分支,我希望我的新分支从“主”分支中成长。我还没有对我的新工作作出任何承诺。分支结构如下:“master”->“Old_feature”

git stash 
git checkout master
git checkout -b "New_branch"
git stash apply

选项1(现有分支)

git stash (from main/any-branch)
git checkout your-existing-branch
git stash apply 

选项2(创建新分支)

git switch -c your-new-branch

事实上,使用GitHub Desktop有一种非常简单的方法来实现这一点,我以前不相信这是一种功能。

你所需要做的就是切换到GitHubDesktop中的新分支,它会提示你将所做的更改保留在当前分支上(将被隐藏),或者将更改带到新分支。只需选择第二个选项,将更改添加到新分支。然后,您可以像往常一样提交。

您还可以创建bash别名来完成所有这些操作。

这将创建新命令。。。

gitco<branch>-检查指定的分支,并随身携带当前的更改gitconew<new branch name>-使用指定的名称(从master分支)创建一个新的分支,并将当前的更改记录在其中

以下是设置别名的步骤。。。

将以下内容添加到~/.bash_profile

gitco ()
{
  git stash && git checkout $1 && git stash apply
}

gitconew ()
{
  git stash && git checkout master && git checkout -b $1 && git stash apply
}

运行source~/.bash_profile以重新加载配置文件

现在您可以运行gitco和gitconew别名命令了。

以下是有关bash别名的更多信息->https://linuxize.com/post/how-to-create-bash-aliases/

提交更改的3个步骤

假设您在GitHub上创建了一个名为featurebranch的新分支。

提取

    git pull --all         Pull all remote branches
    git branch -a          List all branches now

检出并切换到要素分支目录。您可以简单地从上面的branch-a命令的输出中复制分支名称

git checkout-b功能分支

验证

接下来使用gitbranch命令查看当前分支。它将显示前面带有*的功能分支

git branch         

承诺

git add .   add all files
git commit -m "Rafactore code or use your message"

在源服务器上进行更新和推送更改

 git pull origin feature-branch
 git push origin feature-branch