git 命令学习实战

git checkout -b newBranch2 //新建名为newBranch的分支,同时切换到该分支。

 

1、git commit

图中:有C0和C1两个提交(在实际当中,C0,C1表示两个提交的hash值,一长串字符的),当前处于master分支,

使用命令:

git commit -m "本次提交提示信息"
git commit -m "本次提交提示信息"

此时有: HEAD->master->C1

使用后变为:

HEAD->master->C3

2、git branch

  • 使用前:

HEAD->master->C1;

 

git branch newBranch   //新建名为newBranch的分支,指向当前提交

变成:

HEAD->master->C1;

newBranch->C1;


git branch -a          //显示所有分支,包括本地分支和远端分支

显示结果为:


git branch -fnewBranch HEAD^  //将分支newBranch 指向当前提交(HEAD)的上一个(^)提交。如果当前分支不存在,则创建该分支;如果分支位置未指定,则默认为指向当前分支

此时:

HEAD->newBranch->C0;

master->C1;


git branch -d newBranch               //删除名为 newBranch的分支,当删除分支为以下情况会失败:1. 当前分支时; 2. master分支时; 3. 未知的分支时。

变成:

 

3、git merge

此时:

HEAD->master->C3;

bugFix->C2;

git merge bugFix       //将当前分支与 bugFix 合并,重点注意:在实际操作过程中,合并时需要解决代码冲突问题。

此时:

HEAD->master->C4;

bugFix->C2;


4、git rebase

注意与 git merge 相比较,两者都是合并分支,merge更简单,保留所有信息;而rebase能得到更加清晰的工作流

此时:

HEAD->master->C3;

bugFix->C2;


git rebase bugFix      //将当前分支的父提交移到bugFix分支下,得到比merge具有更加线性的提交历史

变为:

HEAD->master->C3'

bugFix->C2;


5、git checkout 切换分支

此时:

HEAD->master->C2;


git checkout C2^       //切换分支,将HEAD指向C2的父提交(^表示上一个提交)——C1 (此处C1代表这个提交的hashcode);

此时:

HEAD->C1;

master->C2;


git checkout -b bugFix //创建分支,并切换到该分支;

此时:

HEAD->bugFix->C1;

master->C2;


 

6、git log 显示日志

使用 git log 可以查看每一次提交的详细信息。

git log

7、git reset 和git revert 撤销更改

git reset 是真正的撤销,当前操作直接丢弃,而git revert  则是将你要撤销回退到的某个状态作为一个新的提交,使得新的提交与你要回退到的状态是一致的,达到撤销的效果,由于git reset只适用于本地的分支,因而:本地撤销一般使用 git reset;远程分支的撤销使用 git revert;

此时:

master->C1;

pushed->C2;//假设该分支与远端分支绑定

HEAD->local->C3;


git reset master       //将当前分支local撤销更改回退到master状态
git checkout pushed    //切换到pushed分支
git revert master      //使用revert将当前远端分支pushed回退到master状态

此时有:

master->C1;

local->C1;

HEAD->pushed->C1';


 

8、git cherry-pick 转移工作区

使用该命令可以将选定的提交记录转移到当前的位置<HEAD>下面。具体看图:

此时: HEAD->master->C1


git cherry-pick C3 C4C7       //将提交 C3 C4 C7 按顺序转移到当前位置之后


 

9、git tag 和 git describe

git tag<commit-name><tag-name>给某个提交打一个标记,一般是在一些特殊意义的提交打标记,比如标记名为版本号等。

git describe 则用来描述当前位置距离最近的一个标记点相差几个提交,输出格式为:<tag>_<numCommits>_g<hash>

此时:


git tag V0 C1  //给C1打上标记V0
git tag V2 side

git describe   //描述当前位置距离最近的标记相差几个提交

结果为:


C5距离最近标记V0相差3个提交: C2 C4 C5


10、git clone

在开始一个项目时,使用git clone <版本库的网址> 将远端版本库克隆到本地仓库。

在clone 之前远端仓库的样子:


git clone <版本库的网址>       //克隆目标版本库到本地仓库

此时,本地仓库和远端仓库示例如下:


其中 o/master为本地仓库的远端分支,与远端仓库的master分支相互映射,实际项目中,一般使用origin而不是o,名字格式为:<remote name>/<branch name>

注意:当前分支<HEAD>不能指向远端分支: o/master;这些分支的状态只伴随远端分支更新而更新,即使用pushpull等于远端相关的git操作时


11、git fetch

git fetch 完成了两项工作:1> 下载本地仓库中未包含的提交;2> 更新我们的远端分支(origin/master)但不会:更新你的本地分支


git fetch      //1> 下载本地仓库中未包含的提交;2> 更新我们的远端分支(如origin/master)


12、git pull

注意,此时 本地分支master 与远端分支 o/master 处于绑定状态。

如果不处于绑定状态则无法使用pull和push;因为如果没有绑定的话,不知道到底要pull哪一个分支下来,以及不知道将该分支push到哪个分支上去


git pll        //实现两个功能,git fetch 以及git merge;

等价于:

git fetch

+

git merge o/master

注意:git pull --rebase的作用等同于 git fetch + git rebase,这样能够得到更加清晰线性的工作流

 

13、git push

提交当前代码到远端分支;注意:master与远端分支o/master相对应;

 

git push 之后,完成本地与远端的同步

git push --force

强行将当前分支提交到远端分支,即使会导致远端版本回滚;如果不存在映射的远端分支,则会创建对应的远端分支。

git push origin<localname> :<originname>

将指定的本地分支<localname> 推送到指定的远端分支 <originname>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值