git 用到的命令

基本的操作

  • 查看状态: git    status 
  • 将新文件加入到暂存区 :   git  add  文件名
  • 将暂存区的文件提交到本地库: git   commit    文件名

   在提交的时候,需要有一段文字来记录,你本次做的提交或者说修改是干什么的,想当于是注释。git   commit    文件名 这个命令或默认的进入到编辑器。

  • 将暂存区的文件提交到本地库(并直接写好注释提交,就避免里进入编辑器):git  commit   -m   " 注释内容"  文件名
  • 所有添加到暂存区的内容是可以撤回来的:git  -rm  文件名

查看历史版本信息

  • 查看历史信息,或者说版本信息(详细的信息):git  log  

  • 查看历史信息,或者说版本信息(比较美观的显示部分信息):git   log    --pretty=oneline

  • 查看历史信息,或者说版本信息(更简洁的显示部分信息):git   log    --oneline

  • 查看历史信息,并且给我们没明确的显示想要回到历史版本需要移动的步数:git  reflog

版本回退操作(吃后悔药)

版本号哟有一个头指针,所谓的回退操作就是移动头指针的位置

  • 回退到某一个版本(根据哈希值版本号) git   reset   --hard   版本号(是一个哈希值)
  • 回退到某一个版本(不推荐):git reset --hard HEAD^   这代表从当前版本回退一步,后边加数字n就是回退n步
  • 回退到某一个版本(不推荐):git reset --hard HEAD~n   这个意也是代表回退n步

git   reset   --hard   版本号 

--hard 还有两个兄弟 分别是 soft 和 mixed 

稍微的说一下三者的区别,了解就好:hard 是同时挪动 本地库  暂存区  工作区;soft 只挪动本地库,mixed挪动本读库和暂存区,因为平时不怎么会用到,所以只需要记住 hard就可以了。

分支操作

  •  创建分支  : git   branch  name
  •  查看分支  : git    branch   -v 
  •  切换分支  : git   checkout  name
  •  合并分支  : 首先要回到主线(marst)上 (假设我们是想要合并到主线上) 然后再 :git   merge   想要合并的分支名字 
  •  合并冲突的解决  : 产生冲突是必然的,肯定有这样一个情况,就是分支和主干修改了同一块代码,并且,修改的内容不一致。原本我以为不一样的地方都叫冲突,然而做了测试才发现,并不是这样的。

 我这里有必要列一下成产中的代码修改情况:

      第一种:是大家都修改了相同地方的代码,并且修改的最终内容还不一样,这百分百的冲突。

      第二种:分支对主干上的代码进行了修改,然后合并到主干上来,这不会产生冲突。

      第三种:主干对原来的代码进行了修改,分支也对主干上的代码进行了修改,并且修改的地方还不一样。这样的情况合并到主干上的代码,不算冲突,并且,同时保存两份修改。在实际开发中并不会在主线上直接进行修改,都是通过分支进行修改的。加上在工作中,在提交之前,需要在自己的分支更新成最新的代码,也就是说先将已经发布的master  merge 到自己分支上,这样才是最完全的分支,然后主线再merge 分支的新增功能。

本地库连接github的远程库

 先在github上建立一个远程库,想让远程库和本地库进行交互,必定需要有一条路连接两者。那就是远程库的地址

为了方便操作,我们可以将这个地址记在git上

  • 查询git 的记录情况   : git  remote   -v
  • 在git上添加remote记录  : git  remote   add   name(这个就是一个好记的代理者)   要记录的内容

                                                 比如:git remote add origin  https://github.com/faceAngus/demo.git

  • 从本读库向远程库推送  :git  push  指定好的远程库地址别名  分支名称  

 第一次向远程库推送,需要输入托管中心的密码。

另外一个人加入开发 

一个人自己玩似乎没有意思,那就叫上别人一起来开发把,想做协同开发,需要自己的伙伴来,同伴肯定有本地库,伙伴就不需要建立远程库了,一个远程库,大家一起用就好了。

第一次伙伴进来需要clone一下远程库到本地库。

  想要克隆谁的远程库就要谁的地址。

  • clone 远程库到本地库 的指令 :git clone   要克隆的远程库地址 

克隆完了会产生三种效果:

   1.完整的把远程库下载到本地

   2.创建远程库地址别名

   3.初始化本地库

到clone完为止,只能产生克隆完的效果。可以修改代码,所有的更新只能停留到本地库,并不能往远程库推。接下来需要的是老大邀请你进入成员组

邀请步骤如下截图

 假如你的小伙伴叫做  tim ,你已经把tim邀请进来了。那么tim可以随时进行推送操作了。

从远程库拉取代码到本地库:

 再假如 tim 将自己的代码推到了远程库,你本人在自己的远程库并不能看到,所以这就有了拉取操作,将远程库的内容先拉下来看看,在决定是不是要保留,拉取操作分为两步,分别是 

  • 先看一下,将远程的内容下载到本地:git   fetch  远程库别名  主干名
  • 合并操作:git   merge  远程库名  主干名 
  • 拉操作干脆狠一点(相当于是以上两个操作的合并):git   pull  远程库名  主干名 

解决冲突的要点

  git 很好的一点就是:如果不是基于最新的版本,就不能推送,想要推送可以,先将远程库的代码拉取下来,如果拉取下来以后冲突了,那就得解决冲突。这样就保证了主干一定不会冲突,冲突只会在分支上产生,并且产生了以后就得解决才能往主干上推。

优雅的跨团队开发:

先贴一个图:了解一下流程

   通过这个图我们可以发现,git 真的是太流畅了,对于自己团队的人很好管理,万一需要别的团队(乙方),只需要一个fork给另外一个团队,这就相当于是别的团队复制了一个远程库,但是属于自己所有,自己在上边怎么玩都可以,将功能实现了以后,通过pull request  可以提交到甲方去,甲方老大审查一下,没问题,merge到主干上来。跨团队整个流程就显得很优雅。

  跨团队开发步骤:

  • 先将自己的项目地址发给乙方团队

  • 乙方团队打开这个项目地址去Fork

  • Fork完了以后,就可以在本地进行修改,添加功能等操作了。然后推送到本地库,然后推给甲方团队的远程库

接着:

再接着:

给甲方团队发点关于项目的描述性的信息:

然后乙方到目前为止就做完了该做的事,然后等着甲方接收,merge ,就领工资了。

  • 接下来是甲方:

点开看到:

可以查看乙方写的代码怎么样,过关不。

如果乙方代码合格:就合并代码

合并完了,远程库就修改完毕了。接下来甲方如果有需要就将代码拉取到自己的本地库就可以了,整个跨团队开发的过程就完成了。



 

猜你喜欢

转载自blog.csdn.net/star1210644725/article/details/89848872
今日推荐