git基础指令总结持续更新之git分支简介和基本操作,解决合并和冲突,回退和rebase(变基),分支命名和分支管理,学习笔记分享

git 分支简介和基本操作

Git 分支是 Git 的核心特性之一,它允许开发者在不同的开发线上工作,而不会影响主代码库。以下是 Git 分支的简介和一些基本操作:

分支的概念:

分支是 Git 中的一个独立开发线。创建分支时,Git 会记录当前的状态并创建一个新的开发线。分支允许开发者进行实验或修复错误,而不会影响主分支(通常是 master 或 main)。

分支的类型:

  • 本地分支:仅在本地仓库中存在,未推送到远程仓库。
  • 远程分支:由远程仓库推送更新而来,通常以 origin/ 前缀表示。
  • 跟踪分支:与远程分支相关联的本地分支,可以自动与远程分支进行合并。

分支的优点:

  • 允许同时进行多个任务或修复。
  • 便于代码审查和合并。
  • 可以安全地进行实验性开发。

基本操作

创建分支:

git branch <branch-name>:创建一个新分支。
git checkout -b <branch-name>:创建新分支并切换到该分支。

切换分支:

git checkout <branch-name> 或者 git switch <branch-name>:切换到指定分支。

查看分支:

git branch:列出所有本地分支。
git branch -a:列出所有本地和远程分支。

合并分支:

git merge <branch-name>:将指定分支的更改合并到当前分支。

删除分支:

git branch -d <branch-name>:删除本地分支(已合并)。

git branch -D <branch-name>:删除未合并分支

git push <remote-name> :<branch-name>:删除远程分支。

推送分支到远程仓库:

git push <remote-name> <branch-name>:将本地分支推送到远程仓库。

拉取远程分支更新:

git pull:拉取远程分支的最新更改并自动合并到当前分支。

设置跟踪分支:

git branch --set-upstream-to=<remote>/<branch-name>:设置当前分支的上游分支。

查看分支合并图:

git log --graph --decorate --oneline --all:以图形方式显示分支的合并历史。

使用分支可以提高开发效率,允许多个开发者同时在不同功能或修复上工作,最终通过合并将更改集成到一起。正确使用分支是 Git 工作流程的关键部分。

解决合并和冲突

当合并时出现冲突,Git 会停止合并并让开发者手动解决冲突。解决后,使用 git add 将解决后的文件暂存,然后 git commit 提交更改。

总结:

两个分支未修改同一个文件的同一处位置:git自动合并

两个分支修改了同一个文件的同一处位置:产生冲突

解决方案:

1.手工修改冲突文件,合并冲突内容

2.添加至暂存区 git add file

3.提交修改 git commit -m "message"

中止合并:当不想继续执行合并操作时可以使用下面的命令来中止合并过程。git merge --abort

回退和rebase(变基)

在 Git 中,回退(Revert)和变基(Rebase)是两种不同的操作,它们都可以用来修改或改进提交历史,但它们的目的和工作方式有所不同。

Git 回退(Revert)

定义:回退是一个安全的操作,用来撤销一个或多个已经存在的提交。它会创建一个新的提交,这个提交是被撤销提交的逆操作。这意味着回退不会改变历史,而是在历史中添加一个新的提交来"反做"之前的更改。

使用场景:

  • 当你想要撤销一个已经合并到主分支的提交,但这个提交可能已经被其他分支或开发者所依赖。
  • 当你想要撤销一个错误的提交,但不想重新编写历史。

命令:
git revert <commit-hash>:撤销单个提交。
git revert --no-commit <commit-hash>:执行变更但不立即提交,允许进一步修改。

特点:

  • 回退操作是可逆的,即你可以再次回退一个回退操作。
  • 它不会改变历史,因此对于共享分支来说是一个安全的选择。

Git 变基(Rebase)

定义:变基是一个更激进的操作,它将一系列的提交从一个分支上摘下来,然后应用到另一个分支上。这可以用来整合来自不同分支的更改,或者清理提交历史。

使用场景:

  • 当你想要更新你的分支以包含主分支的最新更改,同时保持你的提交独立。
  • 当你想要清理或重新排序提交,例如在提交被推送之前。

命令:
git rebase <base-branch>:将当前分支的提交变基到 。

特点:

  • 变基可能会引入合并冲突,需要手动解决。
  • 它可以改变历史,因此在已经共享的分支上使用时需要谨慎。
  • 变基可以是交互式的,允许你编辑、合并或删除提交。

总结

回退是一个安全的操作,用于撤销已经发生的更改,而不会改变历史。

变基是一个更灵活的操作,可以用来整合更改或清理提交历史,但它可能会改变历史,因此在团队协作中使用时需要小心。

选择使用回退还是变基,取决于你的具体需求和团队的工作流程。在团队中,通常建议使用回退来撤销已经合并的更改,而使用变基来更新和清理尚未合并的分支。

分支命名和分支管理

分支命名规范

推荐使用带有意义的描述性名称来命名分支:

  • 使用有意义的名称,确保分支名称能够描述分支的目的,例如 feature/login-page 或 bugfix/issue-123。

    避免使用主分支名称:

  • 不要使用 master 或 main 作为其他分支的名称,以避免混淆。

    使用小写字母:

  • 分支名称通常使用小写字母,避免使用大写字母。

    使用连字符或下划线:

  • 使用连字符(-)或下划线(_)来分隔单词,例如 user-profile 或 user_profile。

    避免使用特殊字符:

  • 不要在分支名称中使用空格或特殊字符,这可能会导致命令行问题。

    分支类型:

根据分支的用途,可以有不同的命名约定。例如:

feature/:新功能开发。
bugfix/
:修复错误。

release/:准备发布的版本。
hotfix/
:紧急修复。

版本号:

对于发布分支,可以在名称中包含版本号,例如 release/1.2.0

分支管理

  • 创建分支:

    在创建新分支之前,确保你的本地仓库是最新的,通过 git pull 获取最新更改。

  • 定期拉取更新:

    在分支开发过程中,定期拉取远程分支的更新,通过 git pull 或 git fetch 避免长时间未同步。

  • 合并还是变基:

    决定是使用 git merge 来合并更改,还是使用 git rebase 来整合更改并保持线性历史。

  • 代码审查:

    在合并到主分支之前,确保代码经过了审查,可以使用 Pull Request 进行代码审查。

  • 删除分支:

    一旦分支的目的已经完成并且合并到了主分支,使用 git branch -d 删除本地分支,使用 git push --delete 删除远程分支。

  • 避免在主分支上直接开发:

    避免在 master 或 main 分支上直接进行开发,所有的开发工作都应该在分支上完成。

  • 使用分支策略:

    采用分支策略,如 Git Flow 或 GitHub Flow,以标准化分支的创建、合并和管理流程。

  • 保持分支简洁:

    尽量保持分支的生命周期短且目的单一,避免一个分支用于多个不相关的功能。

  • 沟通协作:

    在团队中明确沟通分支的使用和合并策略,确保所有成员都遵循相同的工作流程。

  • 分支保护规则:

    对于重要的分支(如 master 或 main),可以设置保护规则,要求 Pull Request 必须经过审查和测试。

定期合并已经成功验证的分支,及时删除已经合并的分支保持合适的分支数量,为分支设置合适的管理权限。

相关推荐
懒惰的bit2 小时前
基础网络安全知识
学习·web安全·1024程序员节
2401_858286113 小时前
L7.【LeetCode笔记】相交链表
笔记·leetcode·链表
Natural_yz5 小时前
大数据学习09之Hive基础
大数据·hive·学习
龙中舞王5 小时前
Unity学习笔记(2):场景绘制
笔记·学习·unity
Natural_yz5 小时前
大数据学习10之Hive高级
大数据·hive·学习
love_and_hope5 小时前
Pytorch学习--神经网络--完整的模型训练套路
人工智能·pytorch·python·深度学习·神经网络·学习
天行健王春城老师5 小时前
基于TRIZ的教育机器人功能创新
经验分享·机器人
青椒大仙KI116 小时前
24/11/7 算法笔记 PCA主成分分析
笔记·算法·信息可视化
夜雨星辰4876 小时前
Android Studio 学习——整体框架和概念
android·学习·android studio
奔跑的花短裤6 小时前
少儿编程启蒙学习
学习·青少年编程·机器人·ai编程