来公司一周多,主要是在熟悉各种环境和流程,而作为研发来讲,git的使用也是必不可少的。以前使用方式单一,几个人对着master,pull和push,来了之后发现其实在日常的开发中,git可以很方便的帮我们进行分工和合并,这里总结一些平时可能会用到的命令和要点:

1. 开发模式:

  也了解过,其实部门内部基本上都是分支开发的模式,很少有人做主干开发,这样的好处也是可以保证主干的可持续发布(主干好像是被发布服务Odin接管了)。那现在基本的开发模式(对于我这个单用户来说),是这样的:

  可能有些麻烦,但是这样可以保证每次dev更新可以及时合并到本地,并且加了本地dev就不需要远端merge之后立刻拉最新的代码。当然远端会有很多分支,之后开发的版本多了,功能多了,这个图还会再做调成,本地可能也会多一些分支做不同的模块修改。

2. 基本命令

  pull:这个是远程仓库拉取数据到本地仓库,就是为了和远程仓库所匹配
  commit:当我们想要把自己的代码想要提交到远程的时候,所用的命令行语句,由于我们修改所在的区域在暂存区
  我们首先要把自己的代码commit(提交)到本地仓库,然后在从本地仓库push到远程仓库,但是切记住一点,我们如果每一次在commit的时候,我们都需要先从线上pull最新的代码到本地仓库,然后在把暂存区里面的代码提交到本地仓库,这个时候如果没有冲突固然是最好的,如果有了冲突,这我需要解决冲突,这个此时本地仓库已经是最新的代码
且又包括暂存区上面的代码了。
  push:这个就是我们前面把代码提交到了本地,如果我们需要提交到远程服务器上,需要把代码push到远程的分支里面。(git push origin local_branch:remote_branch
  merge:如果有两个分支里面的代码在同一个区域中(两个同时隶属于暂存区,或本地仓库,或远程仓库),这个时候需要把这个两个分区合并。
 
补充:
  每次自己的代码更新之后,晚上最好都推到自己的分支上去,及时更新!
  远程分支就是本地分支push到服务器上的时候产生的。比如master就是一个最典型的远程分支(默认)。

3. Git查看、删除远程分支

查看远程分支
  加上-a参数可以查看远程分支,远程分支会用红色表示出来(如果你开了颜色支持的话):
$ git branch -a

删除远程分支
在Git v1.7.0 之后,可以使用这种语法删除远程分支:
$ git push origin --delete <branchName>

否则,可以使用这种语法,推送一个空分支到远程分支,其实就相当于删除远程分支:
git push origin :<branchName>

两种语法作用完全相同。

4. git log命令

  git log --graph --decorate --oneline --simplify-by-decoration --all
说明:
  --decorate 标记会让git log显示每个commit的引用(如:分支、tag等) 
  --oneline 一行显示
  --simplify-by-decoration 只显示被branch或tag引用的commit
  --all 表示显示所有的branch,这里也可以选择,比如我指向显示分支ABC的关系,则将--all替换为branchA branchB branchC
  
  这个可以很清楚的显示,当然这两天用了idea查看发现IDE显示的更清晰。。
 
5. git 对比两个版本之间差异

  比如我们有 2 个分支:master, dev,现在想查看这两个 branch 的区别,有以下几种方式:

  - 查看 dev 有,而 master 中没有的:git log dev ^master
  - 同理查看 master 中有,而 dev 中没有的内容:git log master ^dev

  - 查看 dev 中比 master 中多提交了哪些内容:git log master..dev
  - 不知道谁提交的多谁提交的少,单纯想知道有什么不一样:git log dev...master
 
  - 在上述情况下,再显示出每个提交是在哪个分支上:git log --left-right dev...master
 
6. git merge 和 git rebase 
  之前知道git pull 等于 git fetch + git merge,但是今天看到rebase的命令,还是和merge很像的,两个都是用来合并两个分支用的,在使用过程中,这两个概念容易混淆。
  然后这篇博文写的很清楚:http://www.jianshu.com/p/c17472d704a0
  但是其实开发中我主要还是用的merge,还是要深刻理解下吧。

7. git reset --hard,--soft,--mixed

reset命令做的事情就是重置HEAD(当前分支的版本顶端)到另外一个commit。

举例:

   (F)
A-B-C

master

a. 输入git reset --hard,结果会变成:

 (F)
A-B

master

C 状态彻底没有,再也找不回来。所以,没事不要用这个命令。

b. 输入了git reset --soft,结果是:

 (F)
A-B-C

master

文件状态与分支的指针都指向上一个提交,C 还是在的,只是没显示。

c. 输入 git reset --mixed,结果是:

   (F)
A-B-C

master

分支指针指向上次提交点,但是文件状态还是在当前文件 C ,我看到的现象就是 C 文件还在,但是没有 add ,是红色的。 
可以看出,三个命令中 mixed 是最好的回退处理方式,其实这也是 git reset 的默认参数。

8. git stash ,git stash pop 

  git stash 可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug,  先stash, 使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作。

写在最后:其实慢慢发现git是个设计非常有意思并且东西很多的工具,自己了解的还是很浅显,这只是作为自己的一个命令收录吧,之后用到其他的会不断更新。

关于工作中Git相关的总结的更多相关文章

  1. Git-【技术干货】工作中Git的使用实践

    Git-[技术干货]工作中Git的使用实践 置顶 2019-09-17 21:02:16 web洋仔 阅读数 11444更多 分类专栏: Git   版权声明:本文为博主原创文章,遵循CC 4.0 B ...

  2. 工作中Git使用笔记

    git相关说明. //git 安装$ git config --global user.name "xxx"代码提交时的用户名,与GITLAB注册用户名建议保持一致$ git co ...

  3. 工作中git常用命令

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 16.0px; font: 14.0px "PingFang SC" } ...

  4. 工作中git 操作汇总

    1. git branch -l  查看本地branch 2. git reset --hard 回滚全部修改 3. git status  查看本地修改 4. git pull 更新代码 5. gi ...

  5. 记录工作中linux相关操作

    在项目部署之后,查看日志能查看部署结果是否正确部署. 最开始查看日志我会使用cat service.log tail -f service.log vim service.log 打开日志之后 /+查 ...

  6. 工作中常用Git指令操作

    常用Git指令总结 前阵子有几天好不顺,可谓是喝水都呛着,更何况被Git给呛着了,还不轻,哈哈.所以打算总结一下自己在工作使用到Git相关的东西以及和大家探讨使用GIt的心得体会.于是,关于Git的的 ...

  7. 关于git你日常工作中会用到的一些东西

    前言 git是一个版本控制工具, 版本控制主要的好处有三点: 从当前版本回退到任意版本 查看历史版本 对比两个版本差异 git 相关术语 repository 仓库 branch 分支 summary ...

  8. git在工作中的用法总结-使用篇

    上一篇介绍了git的环境安装配置,本篇对git在工作中常用的用法进行总结,已满足大部分的日常工作需求,对于其他的一些git命令用法在今后使用到时我也会更新上来,文中如有错误,欢迎大家指出来,谢谢~ 一 ...

  9. 工作中常用的Git操作--------(一)

    今天主要记录一下平常工作当中使用的git操作: 1.git的安装这里省略: 2.git的操作指令: 在项目开发中,经常是拉去经理已经搭建好的一个项目,也就是给我们一个git地址.比如:http://g ...

随机推荐

  1. ------ 新春第一炮:阶乘算法性能分析与 double fault 蓝屏故障排查 Part I ------

    -------------------------------------------------------------------------- 春节期间闲来无事想研究下算法,上机测试代码却遇到了 ...

  2. vue调试工具之 vue-devtools的安装

    这里介绍一下vue-devtools的安装方法之一: chrome浏览器的应用商店不能直接访问(需要跨域),所以直接应用商店安装的方法就行不通了. 1.到github主页去下载安装: git clon ...

  3. Linux 虚拟IP

    虚拟IP Linux网卡上绑定另一个虚拟ip,即网卡上一个真实ip一个虚拟ip.当然通过这2个ip都可以连接到该主机. 实现原理主要是靠TCP/IP的ARP协议.因为ip地址只是一个逻辑 地址,在以太 ...

  4. PLEC-交流电机系统+笔记

    1.固有机械特性近似图 2.三相交流电机的控制系统 1)理论推导 第一次制动选择能耗制动,第二次制动选择倒拉制动. 2)模型搭建 3)模拟仿真 3.心得体会和笔记总结 制动方式的选择主要是根据各个制动 ...

  5. 蓝桥杯 基础练习 之 FJ的字符串

    问题描述 FJ在沙盘上写了这样一些字符串: A1 = "A" A2 = "ABA" A3 = "ABACABA" A4 = "AB ...

  6. yum出问题啦

    BUG 不小心把/usr/local上的一堆文件(夹)给删除了,于是乎,一堆问题冒出来了 loading mirror speeds from cached hostfile 解决方法 一定要执行 y ...

  7. OpenVPN的那些坑

    遇到的情形 最近遇到一种情况,当需要同时使用到多个VPN连接时,默认的openVPN连接是不支持的,但是可以通过手动配置虚拟网络适配器进行相关的设置. 具体解决方法 基本思路是:在本地的网络连接中添加 ...

  8. bzoj 3669: [Noi2014]魔法森林

    bzoj 3669: [Noi2014]魔法森林 Description 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士.魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号 ...

  9. 接口测试基础(fiddler、postman的使用、python实现测试接口程序)

    写在前面:本文主要的章节规划: 1.什么是接口测试    另外,有的时候会直接调用别的公司的接口,比如银行的.淘宝的.支付宝的,此时也需要做接口测试以及验证数据: 做接口测试的好处:      其中, ...

  10. Java经典编程题50道之七

    输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. public class Example07 {    public static void main(String[] args) ...