一个非常方便的可视化 git 命令平台
git 概览
git 是一种分布式的代码版本控制工具。远端本地协同进行版本的控制,任意一台本地电脑上的数据都是服务器的克隆,服务器数据可以通过本地的数据进行恢复;本地具有完整的提交历史,可以检测出各个版本历史,可以完全脱离网络进行提交。
git 分支合并细节
分支合并
- merge 方式:checkout 到 B 中,使用 merge 命令。最终在 B 中创建了一个节点存储 A 合并到 B 的结果
- rebase 方式:分支历史更加干净,推荐使用。checkout 到 A 中,在 commit 之后 rebase 为 B。实际上就是将当前的改动节点追加到 B 分支之后,所以 rebase 完之后再进行 merge 后 B 的分支图就是比较干净的直线。
游离分支问题
在历史的节点中进行更改提交会导致出现游离的分支,若发现自己已经在游离分支上进行了提交,解决方案是使用 git checkout 创建分支。
远端协作
- git pull = git fetch + git merge。git fetch 将远端的 main 分支内容拉取下来,然后同步本地的 origin/main 指针;git merge origin/main main,将获取的远端改动合并到当前的本地改动中。
- git pull —rebase = git fetch + git rebase,将远端的改动拉取下来,并且进行换基,推荐使用,因为这样的分支历史会更加干净。
冲突
两个不同的分支,对同一个位置进行了不同的改动,就会出现冲突,需要选择一个进行保留。这也是 git rebase 或者是 git merge 常出现的情况。
# current branch 'dev-2'
git add -A
git commit -m"feature"
# before we push, rebase to origin/main
git rebase origin/main
HEAD 指向当前分支的最新 commit,所以实际上 HEAD 就是指向从远端拉取的改动;而下边的则是当前本地的改动,在这两者间进行选择即可。
git workflow
典型分支模型
分支 | 说明 | 规范命名 | checkout from | merge to |
---|---|---|---|---|
master | 最稳定的主干分支,随时可以当作 release 版本。不能在上边做任何提交,只能从其他分支合入。 | |||
develop | 开发的主干分支,保存最稳定、最新的开发成果。主要合并其他分支,例如 feature 分支、bugfix 分支。 | |||
feature | 新功能分支 | feature/功能名 | develop | develop |
release | 发布分支,对应一次新版本的发布,只接受 bugfix | release/发布名 | develop | develop、master |
hotfix | 生产环境中紧急热修复 | hotfix/修复 bug 名 | master、release | develop、master |
常用操作
- 将最后一次的 commit 切换回 changes to be committed 状态
git reset --soft HEAD^