首页 > 解决方案 > 如何使用 git 分支同时处理两个独立的事情?

问题描述

我们在我们的组织中使用 Azure DevOps Git 存储库。我们最近开始使用 GIT。

我检查了一个名为“feature-123”的本地分支。我做了一些我提交给本地分支的更改。但是我还没有完成功能开发,我不得不切换到其他一些紧急的错误修复。为此,我检查了名为“bug-999”的新本地分支,我想在其中处理紧急错误。我修复了这个错误并将“bug-999”推送到远程。但我看到我来自“feature-123”的提交也被推送了。

因此,我的第一个本地分支中的提交被带到新的本地分支,当我推送时,它们一直到远程。

问题:

  1. 如何处理这种情况?
  2. 如果我想推送一个特定的提交(不包括以前的提交),我该怎么做?

标签: gitazure-devops

解决方案


出现此问题是因为您的错误修复分支是从功能分支创建的。因此,默认情况下,它将包含您的功能分支已经拥有的所有提交。git 中的分支只是指向提交的指针。因此,当您创建错误修复分支时,git 又分配了一个指针,指向功能分支的最新提交。现在,每当您在错误修复分支中添加提交时,该指针就会向前移动,保持所有先前的提交完好无损。

TLDR:基于主分支而不是功能分支的新分支(在这种情况下是错误修复)。

以下是步骤:

假设您有 2 个分支,即。main& feature1. feature1分支是从分支分支出来的main。你目前在feature1分支上,你做了一些改变。但是你意识到有一个紧急的错误需要在 main 上修复。这是你可以做的 -

  1. feature1在分支上暂存并提交您的更改或stash使用git stash
  2. 使用检查main分支git checkout main
  3. 使用分支分支错误修复分支git checkout bugfixBranchName
  4. 做你的改变并提交它们

这可以确保您新创建的错误修复分支基于主分支,因此在分支中进行的提交feature1不会出现在bugfix分支中。

现在来到你的第二个问题,这个问题将帮助你回答这个问题。


推荐阅读