本文作者:不许人间见白头

分支管理,远程分支管理,标签管理,git别名

不许人间见白头 2个月前 ( 12-16 ) 126

分支管理

1、查看分支

[root@o20171014056080 code]# git branch* master

2、创建分支

[root@o20171014056080 code]# git branch  分支名

3、切换到ahaoyw分支下

[root@o20171014056080 code]#  git checkout  ahaoyw  
 切换到ahaoyw分支下Switched to branch 'ahaoyw'
 [root@o20171014056080 code]# git branch* ahaoyw
  master
不同分支内容不互通

4、可合并分支

[root@o20171014056080 code]# git checkout master
[root@o20171014056080 code]# git merge ahaoywAlready up-to-date.

5、测试

在ahaoyw分支里面创建2.txt并写入内容然后提交
[root@o20171014056080 code]# echo “121212121” >>2.txt
[root@o20171014056080 code]# git add 2.txt
[root@o20171014056080 code]# git commit -m 
"ch 2.txt"[ahaoyw 67c6413] ch 2.txt
1 file changed, 1 insertion(+)create mode 100644 2.txt
然后切换到master分支下载做同样的操作写入不同的内容
[root@o20171014056080 code]# git checkout masterSwitched to branch 'master'
[root@o20171014056080 code]# echo “121212121\n45656565” >>2.txt
[root@o20171014056080 code]# git add 2.txt
[root@o20171014056080 code]# git commit -m "ch 2.txt"
[master 86d9a42] ch 2.txt
1 file changed, 2 insertions(+)create mode 100644 2.txt
[root@o20171014056080 code]# git merge ahaoywAuto-merging 2.txt
CONFLICT (add/add): Merge conflict in 2.txt
Automatic merge failed; fix conflicts and then commit the result.

如果master分支和ahaoyw分支都对2.txt进行了编辑,当合并时会提示冲突,需要先解决冲突才可以继续合并

万一master分支更改的内容是我们想要的呢? 可以编辑2.txt内容,改为想要的,然后提交。切换到ahaoyw分支,然后合并master分支到ahaoyw分支即可(倒着合并)。合并分支有一个原则,那就是要把最新的分支合并到旧的分支。也就是说merge后面跟的分支名字一定是最新的分支

6、删除分支如果分支没有合并,删除之前会提示

[root@o20171014056080 code]# git  branch -d ahaoyw 
error: The branch 'ahaoyw' is not fully merged.
If you are sure you want to delete it, run 'git branch -D ahaoyw'.

强制删除

[root@o20171014056080 code]# git branch -D ahaoyw   //强制删除
Deleted branch ahaoyw (was 67c6413).

7、使用分支的原则

对于分支的应用,建议大家以这样的原则来:

 master分支是非常重要的,线上发布代码用这个分支,平时我们开发代码不要在这个分支上。

创建一个dev分支,专门用作开发,只有当发布到线上之前,才会把dev分支合并到master

开发人员应该在dev的基础上再分支成个人分支,个人分支(在自己pc上)里面开发代码,然后合并到dev分支

blob.png

dev分支合并bob分支的命令是:

git checkout dev   //先切换到dev分支,然后

git merge bob

远程分支管理

本地新建的分支如果不推送到远程,对其他人就是不可见的

1、查看远程所有的分支

[root@o20171014056080 code]# git ls-remote
originebe4480b90a6b91033ab1185ccef2f131a73c216        HEAD
ebe4480b90a6b91033ab1185ccef2f131a73c216        refs/heads/dev
ebe4480b90a6b91033ab1185ccef2f131a73c216        refs/heads/master

对于git push分支分两种情况

当本地分支和远程分支一致时

git push会把所有本地分支的变更一同推送到远程,如果想只推送一个分支,使用git push origin branch-name

当本地分支比远程分支多,默认git push 只推送本地和远程一致的分支,想要把多出来的本地分支推送到远程时,使用git push origin branch-name  如果推送失败,先用git pull抓取远程的新提交

git clone的时候默认只把master分支克隆下来,如果想把所有分支都克隆下来,需要手动创建,在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称要一致

标签管理

标签类似于快照功能,可以给版本库打一个标签,记录某个时刻库的状态。也可以随时恢复到该状态

git checkout master 先切到master分支上
git tag v1.0  给master打一个标签v1.0
git show v1.0 查看标签信息
git tag 可以查看所有的标签
tag是针对commit来打标签的,所以可以针对历史的commit来打taggit log --pretty=oneline --abbrev-commit  //先查看历史的commitgit tag v0.9 46d3c1a  //针对历史commit打标签git tag -a v0.8 -m "tag just v1.1 and so on" 5aacaf4  //可以对标签进行描述git tag -d v0.8  //删除标签git push origin v1.0   //推送指定标签到远程git push --tag origin   //推送所有标签
如果本地删除了一个标签,远程也想要删除需要这样操作:
git tag v1.0 -d    //删除本地标签
git push origin :refs/tags/v1.0   //删除远程标签

git别名

git commit 这个命令是不是有点长? 用别名可以提高我们的工作效率
git config --global alias.ci commitgit config --global alias.co  checkoutgit config --global alias.br  branch
查看git别名使用命令
git config --list |grep alias
查询log小技巧:(带颜色)
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
取消别名git config --global --unset alias.br


文章版权及转载声明

作者:不许人间见白头本文地址:https://www.ahaoyw.com/article/226.html发布于 2个月前 ( 12-16 )
文章转载或复制请以超链接形式并注明出处阿豪运维笔记

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏