同一Jira关联多Git提交时,如何基于指定提交修改代码?
基于指定提交进行代码修改的Git操作方案
你的当前分支features/<jiraId>最新提交是abcd,想要基于更早的提交efgh修改代码,以下是几种实用操作方案:
方案1:创建独立新分支修改(推荐,不影响原分支)
这种方式完全保留原feature分支的提交历史,适合不想改动现有提交的场景:
- 创建并切换到基于
efgh的新分支:git checkout -b feature/<jiraId>-updated efgh - 此时工作区已切换为
efgh提交的代码状态,直接进行代码修改即可 - 修改完成后常规提交:
git add . git commit -m "基于efgh提交的修改:[你的具体描述]" - 后续若需要将修改合并回原feature分支,切换回原分支后执行
git merge feature/<jiraId>-updated即可
方案2:在原feature分支上操作
子方案2.1:临时切换到efgh修改(不移动分支指针)
适合只是临时查看或修改efgh版本代码,之后再处理提交的场景:
- 切换到
efgh的游离HEAD状态:git checkout efgh - 在此状态下完成代码修改后,可选择:
- 新建分支保存修改:
git checkout -b feature/<jiraId>-temp git add . git commit -m "基于efgh的临时修改" - 直接合并回原feature分支:切换回原分支
git checkout features/<jiraId>,再执行git merge feature/<jiraId>-temp
- 新建分支保存修改:
子方案2.2:重置原分支到efgh(谨慎使用)
如果确定不再需要abcd提交的内容,可将原分支指针直接移回efgh,重新基于该版本开发:
- 执行硬重置(此操作会永久丢弃
abcd的所有更改,执行前请确认无重要内容未备份):git reset --hard efgh - 工作区现在回到
efgh的代码状态,可直接修改 - 修改完成提交后,若需要同步到远程仓库,需执行强制推送(多人协作分支需提前和团队确认,避免覆盖他人更改):
git push -f origin features/<jiraId>
注意事项
- 执行任何会修改提交历史的操作(如
reset、强制推送)前,务必确保本地未提交的更改已通过git stash暂存或提交 - 多人协作的分支,强制推送会覆盖远程分支的提交历史,一定要和团队成员沟通确认后再执行
内容的提问来源于stack exchange,提问作者Raman
相关产品推荐
相关产品推荐

