三、分支管理、远程分支管理、标签管理、git别名

系统运维

一、分支管理

#?cd?/data/gitroot
#?git?branch?//查看当前仓库的分支
*?master//这儿只有一行,*号当前所在的分支是哪个
#?git?branch?aming?//创建分支,名字叫aming
#?git?branch?
aming
*?master

//*号还在master,说明还在maser分支上

#?git?checkout?aming?//git?checkout,切换分支
切换到分支?\\\'aming\\\'
#?git?branch?//再查看分支,*号已经到了aming了
*?aming
master
#?ls?//当前分支和master里的文件是一样的
1.txt
#?vim?2.txt//在aming分支下写一个新的文件
#?git?add?.
#?git?commit?-m?add?2.txt?//要把变更搞到版本库里去,只需要git?commit就可以了。
[root@MRX?gitroot]#?ls
1.txt2.txt
[root@MRX?gitroot]#?git?checkout?master?
切换到分支?\\\'master\\\'
[root@MRX?gitroot]#?ls?//切换到master下查看是没有2.txt的
1.txt

分支是相互隔离开的,分支与分支之间操作文件是互相不受影响的。

分支合并

aming分支做了变更,master分支没有做,现在想让两个分支变化是一样的,可以用合并分支。把aming分支合并到master分支上去,这两个分支就保持一致了。

#?git?checkout?master?//合并分支之前,先切换到目标分支
#?git?merge?aming?//把aming分支里的变更合并到master里来。

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

解决冲突的方法是在master分支下,编辑2.txt,改为aming分支里面2.txt的内容。 然后提交2.txt,再合并aming分支。

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

#?git?branch
aming
*?master
[root@MRX?gitroot]#?vim?2.txt?//master分支下的2.txt增加了几行
uipad
uviadp
euqpvan
4989496
hgiasd
iahusdf
#?git?add?2.txt
#?git?commit?-m?ch?2.txt
#?git?checkout?aming
#?vim?2.txt//aming分支下的2.txt删除了几行
uipad
uviadp
euqpvan
#?git?add?2.txt
#?git?commit?-m?ch?2.txt
#?git?checkout?master
#?git?merge?aming?
自动合并?2.txt
冲突(内容):合并冲突于?2.txt
自动合并失败,修正冲突然后提交修正的结果。
#?cat?2.txt//此时2.txt里不同部分的内容会自动被标记出来。
uipad
uviadp
euqpvan
<<<<<<<?HEAD
4989496
hgiasd
iahusdf
=======
>>>>>>>?aming
[root@MRX?gitroot]#?vim?2.txt?
uipad
uviadp
euqpvan
#?git?checkout?aming
2.txt:?needs?merge
error:?您需要先解决当前索引的冲突
//这里又一个问题,当你合并有冲突时,你不能切换到另一个分支下去。所以尽量避免发生合并冲突
#?git?add?2.txt
#?git?commit?-m?ch?2.txt
#?git?checkout?aming
切换到分支?\\\'aming\\\'
#?git?merge?aming?//两个分支内容保持一致了,再来合并就不会产生任何变化。
Already?up-to-date.

# git branch -d aming //删除分支。如果正在当前分支下,则无法删除当前分支,切换到另一个分支即可。

如果分支没有合并,删除之前会提示,那就不合并,强制删除:

# git branch -D aming

二、远程分支管理

使用分支的原则

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

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

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

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

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

#?git?checkout?dev?//先切换到dev分支,然后
#?git?merge?bob

远程分支

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

常识:git clone只能克隆一个master的分支。

创建一个新文件linux.doc和一个新分支dev。

创建分支成功后,再次点击,可以看到对勾在dev的前面,这里可以选择更换分支。

再回到命令行下查看分支,先将这个项目克隆,可以发现只有一个master分支。

查看远程分支 git ls-remote origin,可以看到所有分支。

#?git?ls-remote?origin
45337b0d65a36760796a0f3a45e3f90e1d38ed4e	HEAD
41b9784a6f7aeecb1d485e956b10232b5114592a	refs/heads/dev
45337b0d65a36760796a0f3a45e3f90e1d38ed4e	refs/heads/master

对于git push分支分两种情况

当本地分支和远程分支一致时,git push会把所有本地分支的变更一同推送到远程,比如master和dev。

如果想只推送一个分支,使用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,本地和远程分支的名称要一致。这里的两个branch-name指远程分支的名字。

#?git?checkout?-b?dev?origin/dev
分支?dev?设置为跟踪来自?origin?的远程分支?dev。
切换到一个新分支?\\\'dev\\\'
#?vim?4.txt
#?git?add?4.txt
#?git?commit?-m?add?4.txt
#?git?push
0b51fcb..43fd64ddev?->?dev?//git?push后,最后一行可以看到从dev推送到了dev。
再到远程上刷新,可以看到dev分支下出现了4.txt,而master是没有的。

三、标签管理

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

git?checkout?master?先切换到master分支上,以后打标签也是针对master分支来做。
?git?tag?v1.0给master打一个标签v1.0
?git?show?v1.0?查看标签信息
?git?tag查看当前分支下所有的标签
?tag是针对commit来打标签的,所以可以针对历史的commit来打tag,v1.0是对最新的版本打的标签。
?git?log?--pretty=oneline?--abbrev-commit//先查看历史的commit,这里后面的选项指用简写的commit。
?git?tag?v0.9?46d3c1a//针对历史commit打标签
?git?tag?-a?v0.1?-m?first?tag?2ec587f//可以对标签进行描述
#?git?show?v0.1
tag?v0.1
Tagger:?aming?
Date:?Thu?Sep?19?11:06:29?2019? 0800

first?tag?//查看标签信息可以看到描述

commit?2ec587ff6e9e0e4c67aefb84e02b2b73693d633e
Author:?aming?
Date:?Sun?Sep?8?14:59:15?2019? 0800

first?commit

diff?--git?a/README.md?b/README.md
new?file?mode?100644
index?0000000..6f0cbde
---?/dev/null
   ?b/README.md
@@?-0,0? 1?@@
 #?apelearn

git tag -d v0.8 ?//删除标签

前面的操作都是在客户端,还没有推送到远程服务端。

查看远程上的tags方法,在切换分支的选项里:

git push origin v1.0 ? //推送指定标签到远程

git push –tag origin ? //推送所有标签

如果本地删除了一个标签,远程也想要删除需要这样操作:

git tag v0.8 -d ? ?//删除本地标签

git push origin :refs/tags/v0.8 ? //删除远程标签

四、git别名

git?commit?这个命令可以用别名表示,用别名可以提高我们的工作效率。
格式:
?git?config?--global?alias.别名命令名
?git?config?--global?alias.ci?commit
?git?config?--global?alias.co?checkout
?git?config?--global?alias.br?branch
?这些别名的配置都在/root/.gitconfig文件中,可以在文件内进行更改。
?
?查看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?lg?//可以看到用户,时间,描述和tag。
*?45337b0?-?(HEAD,?tag:?v1.0,?origin/master,?origin/HEAD,?master)?add?3.txt?(6?天之前)?
*?41b9784?-?Create?linux.doc?(7?天之前)?
*?d816b47?-?add?1.txt?(13?天之前)?
*?0c8b170?-?add?2.txt?(13?天之前)?
*?2ec587f?-?first?commit?(13?天之前)?
取消别名
?git?config?--global?--unset?alias.br

总结:

分支管理

git branch ?查看分支

git checkout master ?切换分支

git merge aming ?把aming分支里的变更合并到master里来

git branch -d aming ?删除分支

git branch -D aming ?强制删除分支

远程分支管理

git ls-remote origin ?查看远程分支

git push origin branch-name ?推送单个分支

在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name

标签管理

git tag v1.0 ?给master分支打一个标签v1.0

git show v1.0 ?查看标签信息

git tag ?查看所有标签

git log –pretty=oneline –abbrev-commit ?查看历史的commit

git tag -a v1.0 -m first tag 2ec587f ?对标签做描述

git tag -d v0.8 ?删除标签

git push origin v1.0 ? 推送指定标签到远程

git push –tag origin ? 推送所有标签

git tag v0.8 -d ? ?删除本地标签

git push origin :refs/tags/v0.8 ? 删除远程标签

git别名

git config –global alias.别名 ?命令名

git config –list |grep alias ?查看别名

git config –global –unset alias.br

更多关于云服务器域名注册虚拟主机的问题,请访问西部数码官网:www.west.cn

赞(0)
声明:本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-62778877-8306;邮箱:fanjiao@west.cn。本站原创内容未经允许不得转载,或转载时需注明出处:西部数码知识库 » 三、分支管理、远程分支管理、标签管理、git别名

登录

找回密码

注册