Git分支和标签的使用
git分支
分支即是平行空间,假设你在为某个手机系统研发拍照功能,代码已经完成了80%,但如果将这不完整的代码直接提交到git仓库中,又有可能影响到其他人的工作,此时我们便可以在该软件的项目之上创建一个名叫”拍照功 能”的分支,这种分支只会属于你自己,而其他人看不到,等代码编写完成后再与原来的项目主分支合并下即可,这样即能保证代码不丢失,又不影响其他人的工作。
一般在实际的项目开发中,我们要尽量保证master分支是非常稳定的,仅用于发布新版本,平时不要随便直接修改里面的数据文件,而工作的时候则可以新建不同的工作分支,等到工作完成后在合并到master分支上面,所以团队的合作分支看起来会像上面图那样。
[root@git git_data]# git log --oneline --decorate dbead4c (HEAD, master) add bbb # 默认分支指向你最后一次的提交 HEAD头、指针 4c57a60 modified a 5692532 rename a.txt a 7adfca0 commit a.txt b4017a8 commit a `HEAD 指针指向哪个分支、说明你当前在哪个分支下工作` [root@git git_data]# git branch testing # 新建testing分支 [root@git git_data]# git branch * master # *号在哪里就说明当前在哪个分支上入下图所示 testing
[root@git git_data]# git log --oneline --decorate # 通过命令查看分支指向 dbead4c (HEAD, testing, master) add bbb 4c57a60 modified a 5692532 rename a.txt a 7adfca0 commit a.txt b4017a8 commit a [root@git git_data]# git checkout testing # 切换到testing分支、对应的HEAD指针也指向了testing 切换到分支 'testing' [root@git git_data]# git branch master * testing
[root@git git_data]# touch test [root@git git_data]# git add . [root@git git_data]# git commit -m "commit test"
[root@git git_data]# git checkout master # 切换到master分支后指针指向到了master 切换到分支 'master' [root@git git_data]# git branch * master testing [root@git git_data]# ll # 正常情况下是没有test文件的、保证master分支是线上环境的 总用量 4 -rw-r--r-- 1 root root 8 8月 23 08:42 a
[root@git git_data]# touch master [root@git git_data]# git add . [root@git git_data]# git commit -m "commit master"
合并分支 [root@git git_data]# git merge testing # 提示输入描述信息 相当于git的-m参数 [root@git git_data]# git log --oneline --decorate 3258705 (HEAD, master) Merge branch 'testing' f5ae1d8 commit master ad4f25a (testing) commit test dbead4c add bbb 4c57a60 modified a 5692532 rename a.txt a 7adfca0 commit a.txt b4017a8 commit a
冲突合并 [root@git git_data]# echo "master" >> a [root@git git_data]# git commit -am "modified a master" [root@git git_data]# git checkout testing 切换到分支 'testing' [root@git git_data]# git branch master * testing [root@git git_data]# cat a aaa bbb [root@git git_data]# echo "testing" >>a [root@git git_data]# git commit -am "modified a on testing branch" [root@git git_data]# git checkout master [root@git git_data]# git merge testing 自动合并 a 冲突(内容):合并冲突于 a 自动合并失败,修正冲突然后提交修正的结果。 [root@git git_data]# cat a # 冲突的文件自动标识到文件里,手动更改冲突要保留的代码 [root@git git_data]# git commit -am "merge testing to master" # 进行提交即可 [root@git git_data]# git log --oneline --decorate bba413d (HEAD, master) merge testing to master 34d7a55 (testing) modified a on testing branch ec1a424 modified a master 3258705 Merge branch 'testing' f5ae1d8 commit master ad4f25a commit test 删除分支-d参数 [root@git git_data]# git branch -d testing 已删除分支 testing(曾为 34d7a55)。 [root@git git_data]# git branch * master
git标签使用
标签也是指向了一次commit提交,是一个里程碑式的标签,回滚打标签直接加标签号,不需要加唯一字符串不好记
[root@git git_data]# git tag -a v1.0 -m "aaa bbb master tesing version v1.0" # -a指定标签名字 -m 指定说明文字 [root@git git_data]# git tag v1.0 [root@git git_data]# git tag -a v2.0 dbead4c -m "add bbb version v2.0" # 指定某一次的提交为标签 [root@git git_data]# git show v1.0 # 查看v1.0的信息 git show 加标签查看 [root@git git_data]# git reset --hard v2.0 # 直接还原数据到v2.0 HEAD 现在位于 dbead4c add bbb [root@git git_data]# ll 总用量 4 -rw-r--r-- 1 root root 8 8月 23 11:26 a -rw-r--r-- 1 root root 0 8月 23 11:25 b [root@git git_data]# git tag -d v2.0 # 删除标签 -d参数