Git 分支管理
几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。
创建和切换分支命令
git branch //后面不跟参数时,表示查看当前所有的分支
git branch (branchname) //创建分支
git checkout (branchname) //切换分支
git checkout -b (branchname) //创建分支并切换到新分支
新建立的分支跟原来的分支是一样的,比如我们从master分支执行git branch test 命令,那么test分支的内容就跟master分支一样,但是如果我们切换到test分支中做修改,提交等操作,是不会影响master分支的内容的,从而让我们能够在不同分支中做事,并来回切换。一般我们建议是保留主分支的稳定性,公共的修改统一提交主分支master,主分支来做代码的维护工作。创建的分支就做个性化的需求项目。
删除分支
git branch -d (branchname)
合并分支
//将testbranch分支的内容合并到当前分支
git merge testbranch
git rebase testbranch
两个使用场景是不一样的,merge只是合并另外一个分支的内容,rebase也合并另外一个分支的内容,但是会把本分支的commits顶到最顶端
具体区别请参考zhangyulin54321博客:https://blog.csdn.net/zhangyulin54321/article/details/79996768
解决冲突
在rebase的过程中,也许会出现冲突(conflict). 在这种情况,Git会停止rebase并会让你去解决 冲突;在解决完冲突后,用"git add"命令去更新这些内容的索引(index), 然后,你无需执行 git-commit,只要执行:
git rebase--continue
这样git会继续应用(apply)余下的补丁。
在任何时候,你可以用–abort参数来终止rebase的行动,并且"mywork" 分支会回到rebase开始前的状态。
git rebase--abort
冲突代码说明:
<<<<<<< HEAD
runoob.com
新增加一行
=======
www.runoob.com
>>>>>>> change_site
<<<<<<< 到 ======= 里面的内容为当前分支的原始分支的内容
======= 到 >>>>>>> 里面的内容为需要合并进来的分支的内容
查看提交历史
git log
在使用 Git 提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,我们可以使用 git log 命令查看。
执行 git log 命令后的内容:
commit 088e0543244833e446f1dff67cb5a6a865a4a0ec
Merge: a57c09b ab03264
Author: zdd <zdd@zdd>
Date: Tue Jan 29 11:17:54 2019 +0800
Merge branch 'main_0119' into gms_0129
commit a57c09bbe1e3a1425da96aae03ae51d7250413a4
Merge: fa6e4ad 7ea4562
Author: zdd <zdd@zdd>
Date: Sat Dec 15 10:04:59 2018 +0800
Merge branch 'main_1219' into gms_1219
commit ab03264c606894963e01047e9e8772cfd82004d1
Author: zdd <zdd@zdd.com>
Date: Thu Dec 6 14:00:31 2018 +0800
Updating security string for oc-mr1 to 2019-01-05
commit 就是我们每次提交自动生成的哈希值,我们在查看版本会用到这个哈希值。
查看历史记录的简洁的版本 git log --oneline
git log --oneline
088e054 Merge branch 'main_0119' into gms_0129
a57c09b Merge branch 'main_1219' into gms_1219
ab03264 Updating security string for oc-mr1 to 2019-01-05
查找指定用户的提交日志可以使用命令:git log --author
git log --author=zdd --oneline
088e054 Merge branch 'main_0119' into gms_0129
a57c09b Merge branch 'main_1219' into gms_1219
fa6e4ad Merge branch 'main_1119' into gms_1119
e232fb4 Merge branch 'main_1019' into gms_1019
d14f076 Merge branch 'main_0919' into gms_0919