git - 如何使用 git 分支同时处理两个独立的事情?
问题描述
我们在我们的组织中使用 Azure DevOps Git 存储库。我们最近开始使用 GIT。
我检查了一个名为“feature-123”的本地分支。我做了一些我提交给本地分支的更改。但是我还没有完成功能开发,我不得不切换到其他一些紧急的错误修复。为此,我检查了名为“bug-999”的新本地分支,我想在其中处理紧急错误。我修复了这个错误并将“bug-999”推送到远程。但我看到我来自“feature-123”的提交也被推送了。
因此,我的第一个本地分支中的提交被带到新的本地分支,当我推送时,它们一直到远程。
问题:
- 如何处理这种情况?
- 如果我想推送一个特定的提交(不包括以前的提交),我该怎么做?
解决方案
出现此问题是因为您的错误修复分支是从功能分支创建的。因此,默认情况下,它将包含您的功能分支已经拥有的所有提交。git 中的分支只是指向提交的指针。因此,当您创建错误修复分支时,git 又分配了一个指针,指向功能分支的最新提交。现在,每当您在错误修复分支中添加提交时,该指针就会向前移动,保持所有先前的提交完好无损。
TLDR:基于主分支而不是功能分支的新分支(在这种情况下是错误修复)。
以下是步骤:
假设您有 2 个分支,即。main
& feature1
. feature1
分支是从分支分支出来的main
。你目前在feature1
分支上,你做了一些改变。但是你意识到有一个紧急的错误需要在 main 上修复。这是你可以做的 -
feature1
在分支上暂存并提交您的更改或stash
使用git stash
- 使用检查
main
分支git checkout main
- 使用分支分支错误修复分支
git checkout bugfixBranchName
- 做你的改变并提交它们
这可以确保您新创建的错误修复分支基于主分支,因此在分支中进行的提交feature1
不会出现在bugfix
分支中。
现在来到你的第二个问题,这个问题将帮助你回答这个问题。
推荐阅读
- bash - 我如何使用 shell 对不包含至少一个在上个月访问的文件的目录进行 tar
- eclipse - ESP32 调试只有六针 PROG 接口
- java - 添加列表
到 JSONObject 中,将 Address 添加到 JSONObject - amazon-elastic-beanstalk - 使用 CloudFlare 的 AWS API Gateway 区域自定义域无法正常工作
- amazon-web-services - 云开发工具包 Dynamodb 允许 lambda 删除项目
- android - 在 Kotlin 上使用 Jsoup.connect 崩溃应用程序
- firefox - Firefox ~84 中的“Paint Flashing Tool”在哪里?
- java - 需要哪些 JUnit5 jar 文件?(智能)
- python - Python 安装包:无法使用 pip install 命令安装包
- django - 如何通过 DRF 从 Django QuerySet 中将每一列作为一个列表