git 命令总结(下)

    Git常用命令总结二

   分支管理:
 可以在本地的仓库目录下使用git命令创建,合并,删除分支,也可以使用github上的创建分支选项,

说明在git里有一条主分支master,HEAD指针严格来说不是指向提交的,而是指向master,master代表项目的最新版本和最终提交,HEAD指向的是当前分支。

 

创建新的分支的时候HEAD就指向新的分支了,合并的时候直接把master分支指向新的分支的当前提交就完成了合并。

合并后就可以删除分支了,删除分支就是把指向这个分支的指针删掉。

下面使用命令演示:

创建一个新的分支:

Git checkout –b dev

-b表示创建并切换,

相当于下面两条语句:

 Gitbranch dev

Git checkout dev

然后使用

Git branch查看当前分支

当前分支会前面会有一个*号。

然后就可以在dev上正常提交了

此时dev分支上的工作完成后可以切换回到主分支上

Git checkout master

此时dev分支的成果还没有与master分支合并,所以要切换到master分支使用下面的语句:

 Gitmerge dev

Git merge命令用于合并指定分支到当前分支。

这种合并方式叫快进模式,Fast-forward.

合并后就可以删除dev分支了

Git branch –d  dev

小结:

Git鼓励大量使用分支:

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

 

分支冲突:

当两个分支同时对一个文件进行操作后合并的时候会产生冲突,此时快速模式不能使用

此时可以使用git status查看冲突的文件

然后使用cat <filename>,查看分支内容,Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容。

 

 

此时对文件进行修改后,就可以在主分支上进行add ,commit 了

 

此时可以使用该命令查看分支的合并情况

Git log –graph –pretty=oneline –abbrev -commit

 

小结:

当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

用git log --graph命令可以看到分支合并图。

 

分支管理策略:
 1.通常合并分支时,使用的是快速模式,这种模式的缺点是删除分支后,会丢失分支信息。

 2.强制禁用快速模式,git就会在merge的时候,生成一个新的commit,这样从分支历史上就可以看出分支信息。

演示命令:
1.创建并切块dev分支:

Git checkout –b dev

修改一个文件

Git add <filename>

Git commit –m “add merge”

现在切换master,

Git checkout master

准备合并dev ,--no-ff 参数表示禁用快速模式

Git merge –no-ff –m “merge with no-ff” dev

因为本次合并要创建一个新的分支,所以加上-m参数,把commit描述写入

合并后使用git  log查看分支历史:
git log –graph –pretty=oneline –abbrev-commit

这里就偷懒了一下,截个图:

 

有兴趣想学的话可以:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013758410364457b9e3d821f4244beb0fd69c61a185ae0000

 

在工作分支上出现bug后的解决方式

当我们工作时总会出现很多bug,此时项目需要尽快完成,这里就可以使用分支功能,

第一步先使用命令:
git stash 将工作分支上的工作现场保存。

然后在工作分支上创建Bug分支。

在bug分支修复bug后,就可以删除bug分支了。

此时使用git status查看工作区是干净的,可以使用

git stash list命令查看保存的工作区。

小结

修复bug时,我们会通过创建新的buG分支进行修复,然后合并,最后删除。

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后再git stash pop,回到工作现场。

 

当我们新建分支实现新的功能的时候,常常因为分支没有合并而又要删除的困境,可以使用

Git branch –d feature

是不能直接删除的,会提示你没有合并分支。

此时,可以

Git branch –D feature  ,

这个命令是强行删除,不过要丢弃之前在feature分支上的修改。

小结:

开发一个新的feature最好新建一个分支,

如果要丢弃一个没有被合并过的分支,可以通过,git branch –D <name>强行删除

 

 

多人协作:

当我们从远程仓库克隆时,实际上git 自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin,

要查看远程库的信息,使用git  remote。

或者显示更加详细的信息:

Git remote –v

 

推送分支:

推送分支就是把本地提交推送到远程库,推送时要指定本地分支,这样,git就会把该支推送到远程库对应的分支上。

Git push origin master

如果要推送其他分支,比如dev,改为

Git push origin dev

推送分支的原则:
 1.master分支时主分支,因此要时刻与远程同步,

2.dev分支时开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步。

3.bug 分支只适用于在本地修复bug ,就没有必要推送到远程了,除非老板要看你每周到底修复了多少个bug.

4.feature分支是否推送到远程,取决于你是否和你的小伙伴合作在上面开发。

 

远程协作时两个或者多个人在同一个文件修改并推送时分支dev,使用

Git pull

把最新的提交从修改分支上抓取下来,然后在本地合并,解决冲突,再推送。

当git pull失败时,可以根据提示设置本地分支与远程分支的连接

Git branch –set –upstream dev origin/dev

再git pull

多人协作的工作模式总结:

1.      首先,可以试图使用git push origin branch –name推送自己额修改。

2.      如果推送失败,则因为远程分支比你的本地更新,需要使用git pull 试图合并。

3.      如果合并有冲突,则解决冲突,并在本地提交。

4.      没有冲突或者解决掉冲突后,再用git push origin branch –name推送就能成功。

如果git pull 提示”no tracking branch informatio说明本地分支和远程分支的链接关系没有创建,使用命令git branch –set-upstream branch-name origin/branch-name

 

小结:

1.      查看远程库信息,使用git remote –v

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

3.      从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交。

4.      在本地创建和远程分支对应的分支,使用git checkout –branch-name origin.branch-name,本地和远程分支的名称最好一致。

5.      建立本地分支和远程分支的关联,使用git branch –set upstream branch-name origin/branch-name

6.      从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

 

 

标签管理

标签管理针对的是项目的版本库。和版本历史

发布一个版本时,我们通常先在版本库中打一个标签,这样唯一的确定打标签时刻的版本,将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来,所以标签也是版本库的一个快照。

 

Git的标签虽然是版本库的快照,但是其实就是指向某个commit的指针,所以创建和删除标签都是瞬间完成的。

不过与分支有区别,分支的指针可以移动,标签不能移动。

              创建标签:
          1.切换到需要打标签的分支上,

          Git branch------à查看分支

           Git checkout master -------à切换

            Git  tag v1.0--------à打标签

         然后可以使用命令查看所有标签

       Git  tag

          默认标签是打在最新提交的commit上的,如果忘了打标签,可以找到历史提交的commit  id,

Git log –pretty=oneline –abbrev –commit

会出现对分支的历史操作

前面第一位就是commit id ,比如400b400敲入命令

Git tag v0.9  400b400

注意标签不是按照时间顺序列出的,而是按照字母排序的,

可以使用git  show <tagname>查看标签信息。

Git show v0.9

还可以创建带说明的标签,用-a 指定标签名,-m指定说明文字。,

Git  tag –a v1.0 –m “version  0.1released” 32564234

使用命令git  show v1.0可以看到说明文字。

 

当标签打错了也可以删除

 Git   tag –d v0.1

因为创建的标签都只存储在本地,不会自动推送到远程。所以打错的标签可以在本地安全的删除。,

当然可以平、推送一个标签到远程

Git push origin v1.0

或者一次性全部推送尚未推送到远程的本地标签。

 

如果标签已经推送到远程,删除标签就有点麻烦了。

1.      先删除本地标签

Git tag –d v0.9

然后删除远程,

Git push origin :ref/tags/v0.9

要查看,是否真的从远程库删除了标签,可以登录github

 

小结:
 1.命令git  tag <name> 用于新建一个标签,默认为HEAD,也可以指定一个commitid.

2.git tag –a <tagname>  -m“blaballsldfawlnefnnkl”指定标签信息

3.git tag –s <tagname>  -m“sakdflansldfawlelfnlasndlfnl”

4.命令git tag  查看所有标签。

5.git push origin <tagname>可以推送一个本地标签。

6.git push origin –tags 可以推送全部未推送过的本地标签。

7.git tag –d <tagname>可以删除一个本地标签。

8.git push origin  :refs/tags/<tagname>删除一个远程标签。

 

 

 

自定义git与配置别名

1.      让git 显示不同的颜色

Git config –global color.ui true

2.      Git config –global alias.ststatus  配置git  status 为git   st

3.      Git  config –global alias.co  checkout

4.      Git  config –global alias.ci   commit

5.      Git config  --global alias.br   branch

6.      Git config –globalalias.unstage ‘reset HEAD’把暂存区的修改撤销掉重新放到工作区中

7.      配置一个git last  ,让其显示最后一次提交的信息

Git config  --globalalias.last ‘log -1’

配置git  lg

 

 

忽略特殊文件

比如保存了数据库密码的配置文件等。

   可以使用.gitignore文件,进行忽略

忽略文件的原则是:

1.      忽略操作系统自动生成的文件,比如缩略图

2.      忽略编译生成的中间文件,可执行文件,也就是说如果一个文件时通过另一个文件自动生成的,那自动生成的文件就没有必要放进版本库中,比如java生成的.class文件

3.      忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件

小结:
忽略某些文件时,需要编写.gitignore.

.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理

 

gitconfig --global alias.lg "log --color --graph--pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(boldblue)<%an>%Creset' --abbrev-commit"

配置文件

配置git 的时候加上—global 是针对当前用户起作用的,如果不加则只针对当前的仓库起作用。每个仓库的git配置文件都放在.git/config

文件中

Cat  .git/config

查看配置文件信息

  别名就在[alias]后面,要删除别名,直接把对应的行删掉即可。

  而当前用户的git配置文件放在用户主目录下的一个隐藏文件.gitconfig中

 Cat .gitconfig

配置别名也可以直接修改这个文件,如果改错了,可以删掉文件重新通过命令配置。

 

             

        

     

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值