需求
- 使用git作为项目管理工具管理项目,
- 我需要有两个分支,一个分支是日常的主分支,会频繁的推送和修改代码并推送
- 另外一个是新的业务代码分支,是一个长期开发的功能,同时这个业务分支需要频繁的拉取主分支的代码,除了新的业务代码之外,业务分支的代码要和主分支的代码保持一致
使用bash命令实现
在使用 Git 进行项目管理时,要实现你描述的场景,可以遵循以下步骤:
- 创建主分支(master 或 main): 首先,确保你的主分支(通常是 master 或 main)是稳定的,并且包含了项目的当前状态。
- 创建业务分支:
从主分支创建一个新的业务分支,用于长期开发的功能。例如,你可以使用git checkout -b feature-branch
命令来创建一个名为feature-branch
的新分支。
- 在主分支上进行日常开发: 在主分支上进行日常的推送和修改代码。每次完成一个功能或修复一个 bug 后,确保提交你的更改,并使用
git push
命令推送到远程仓库。
- 在业务分支上开发新功能: 在业务分支上进行长期开发的功能。你可以在这个分支上添加新的代码、修改现有代码等。
- 保持业务分支与主分支同步: 为了确保业务分支的代码与主分支保持一致(除了新的业务代码),你需要定期从主分支拉取最新的代码,并将其合并到你的业务分支中。这可以通过以下步骤完成:
a. 首先,切换到你的业务分支(如果当前不在该分支上):
bash git checkout feature-branch
b. 拉取主分支的最新代码:
bash git fetch origin
c. 合并主分支的最新代码到你的业务分支(你可能需要解决合并冲突):
bash git merge origin/master # 如果主分支名为 'master'# 或者
git merge origin/main # 如果主分支名为 'main'
d. 解决可能出现的合并冲突,然后提交合并结果:
git add .
git commit -m "Merge changes from main/master into feature-branch"
e. (可选)将合并后的业务分支推送到远程仓库:
git push origin feature-branch
- 在业务分支上完成开发后: 一旦你在业务分支上完成了新功能的开发,并且已经与主分支同步了所有必要的更改,你可以将业务分支的代码合并回主分支。这通常是通过一个 pull
request(在协作平台上如 GitHub、GitLab 等)或直接在本地使用 git merge 命令完成的。
- 持续集成/持续部署(CI/CD): 如果可能的话,考虑使用持续集成/持续部署工具(如 Jenkins、GitLab CI/CD 等)来自动化测试和部署流程。这可以确保在主分支上的每次更改都经过验证,并在没有问题时自动部署到生产环境。
使用集成工具IDEA操作
在 IntelliJ IDEA 中使用 Git 进行上述操作,可以按照以下步骤进行:
创建主分支
(master 或 main):
- 如果你的项目已经存在,并且主分支已经设置好了(通常是 master 或main),你可以跳过这一步。
- 否则,你可以在 IDEA 中通过 Git 面板创建主分支(虽然这通常是在命令行或通过 Git 协作平台完成的)。
- 创建业务分支:
- 切换到主分支,找到当前项目,右键git,新建分支
- 在主分支上进行日常开发:
- 日常开发的时候,在 Git 面板中选择 master 或 main分支
- 进行日常的开发工作。 修改代码后,右键点击项目或文件,提交更改(Git ->Commit),并推送(Git -> Push)到远程仓库。
- 在业务分支上开发新功能:
- check out(签出) 到业务代码分支:
阶段性开发完毕之后一定要commit,但是不能push,完全开发完毕之后才能push
- 这样业务代码的开发就存储到本地,不会推送到远程,也不会影响主分支
- 保持业务分支与主分支同步:
- 签出到 业务代码分支
- 选择你要同步的远程分支,和远程主分支保持一致,就选择
对应的远程分支
- 日常代碼开发:
不管是那个分支上的代码开发,切换分支之前一定要commit一下代码,不然切换分之后工作区的代码会被清空
- 完成开发后合并到主分支:
- 在业务分支上完成所有开发工作后,你可以通过 Git Push 将更改推送到远程仓库。
- 然后,你可以在主分支上通过
pull request
(如果使用了 Git 协作平台)或直接在 IDEA 中通过 Merge Changes 来合并业务分支的更改。 解决可能出现的合并冲突,提交合并结果,并推送到远程仓库。
请注意,具体的步骤可能会因 IntelliJ IDEA 的版本和配置而有所不同,但总体思路是一致的。