Git 创建分支最佳实践

Git 鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在 master 分支上工作效果是一样的,但过程更安全。


创建 dev 分支

我们创建dev分支,然后切换到dev分支:

$ git checkout -b dev
Switched to a new branch 'dev'


git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

$ git branch dev
$ git checkout dev
Switched to branch 'dev'


然后,用git branch命令查看当前分支:

$ git branch
* dev
  master


现在,dev 分支的工作完成,我们就可以切换回master分支:

$ git checkout master
Switched to branch 'master'


现在,我们把dev分支的工作成果合并到master分支上:

$ git merge dev
Updating d46f35e..b17d20e
Fast-forward
 readme.txt | 1 +
 1 file changed, 1 insertion(+)



合并多个 commit

在使用 Git 作为版本控制的时候,我们可能会由于各种各样的原因提交了许多临时的 commit,而这些 commit 拼接起来才是完整的任务。那么我们为了避免太多的 commit 而造成版本控制的混乱,通常我们推荐将这些 commit 合并成一个。


首先假设我们有3个 commit,

c4e858b5
2dfbc7e8
f1f92bd2


我们需要将 2dfbc7e8 和 c4e858b5 合并成一个 commit,那么我们输入如下命令

git rebase -i f1f92b 


其中,-i 的参数是不需要合并的 commit 的 hash 值,这里指的是第一条 commit, 接着我们就进入到 vi 的编辑模式。


可以看到其中分为两个部分,上方未注释的部分是填写要执行的指令,而下方注释的部分则是指令的提示说明。指令部分中由前方的命令名称、commit hash 和 commit message 组成。


当前我们只要知道 pick 和 squash 这两个命令即可。

pick 的意思是要会执行这个 commit

squash 的意思是这个 commit 会被合并到前一个commit

我们将 c4e858b5 这个 commit 前方的命令改成 squash 或 s,然后输入:wq以保存并退出,这是我们会看到 commit message 的编辑界面,修改 commit,其中, 非注释部分就是两次的 commit message, 你要做的就是将这两个修改成新的 commit message。


输入wq保存并推出, 再次输入git log查看 commit 历史信息,你会发现这两个 commit 已经合并了。

注意事项:如果这个过程中有操作错误,可以使用 git rebase --abort来撤销修改,回到没有开始操作合并之前的状态。


备注

git log 可以显示所有提交过的版本信息,不包括已经被删除的 commit 记录和 reset 的操作

git reflog 是显示所有的操作记录,包括提交,回退的操作。一般用来找出操作记录中的版本号,进行回退。

git log --graph --pretty=oneline --abbrev-commit

git rebase -i HEAD~2 这里的 HEAD~2 表示合并最近两次的提交, 如果想合并最近三次的提交修改为: git rebase -i HEAD~3



参考

https://www.jianshu.com/p/964de879904a

https://www.liaoxuefeng.com/wiki/896043488029600/900003767775424

声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
真诚赞赏,手留余香
赞赏
随机推荐
Nginx 的 location 设置
WordPress 按自定义排序的两种方法
MySQL 使用 DATE_FORMAT() 和 FROM_UNIXTIME() 格式化时间
WordPress 分页
Node.js 18.x 开始支持内置单元测试
数据库中间表应该如何命名
什么是 RESTful API 的幂等性
WordPress 获取当前主题文件夹的路径