具体的可以参见这篇博客:

http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

1,什么是git

git是目前最先进的分布式版本控制系统,不同于svn的集中式版本控制

2,版本库创建

mkdir  gitlearn

cd gitlearn

git init (创建一个git版本库,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。)

3,将文件添加到版本库

git add readme.txt

git commit  -m "wrote a readme file"

4,查看git状态

git status

git diff readme.txt 查看前后的修改部分

5,版本回退

git log查看提交的历史,重点关注的是commit id(或者git reflog)

git reset --head commit_id进行版本回退

6,git的工作区和暂存区

git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支

7,git撤回错误

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

8.git删除文件

命令git rm; git commit用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件(git checkout -- file)到最新版本,你会丢失最近一次提交后你修改的内容

9,git远程管理

要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git

关联后,使用命令git push -u origin master第一次推送master分支的所有内容;

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的!当有网络的时候,再把本地提交推送一下就完成了同步,真是太方便了!

10,先有远程库,创建本地库的时候

以上讲的是先有本地库,据此创建远程库,如果先有远程库,据此建立本地库,使用git clone命令

要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。

Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

11,git分支合并与创建

Git鼓励大量使用分支:

查看分支:git branch

创建分支:git branch name

切换分支:git checkout name

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

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

git merge --no-ff -m "merged bug fix 101" issue-101 :可以查看合并历史

删除分支:git branch -d name

强制删除的时候,使用git branch -D name

12,分支冲突

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

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

13,bug修复

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

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

14,feature分支

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

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

15,多人协作

多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin branch-name推送自己的修改;

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

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

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

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

这就是多人协作的工作模式,一旦熟悉了,就非常简单。

小结

  • 查看远程库信息,使用git remote -v

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

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

  • 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

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

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

转载于:https://www.cnblogs.com/bobodeboke/p/3873398.html

阿里菜鸟知识储备之二——git工具学习相关推荐

  1. Java EE知识储备(二)

    Java EE知识储备(二) 目录: 1.前台线程和后台线程: 2.Spring: 3.加载驱动的方法: 4.线程的wait和notify方法: 5.线程安全问题: 6.抽象类与接口: 7.final ...

  2. RHEL8.0快速入门系列笔记--理论知识储备(一)

    RHEL8.0快速入门系列笔记–理论知识储备(一) 红帽公司发布Linux8.0系统已经有一段时间,最近准备学习关于RHEL8.0的相关新特性.根据官方介绍:RHEL8.0在云/容器化工作负载方面做了 ...

  3. 阿里菜鸟二面:高级java面试题和答案!含阿里必考面试题赠送!

    阿里菜鸟一面面试题目: 1.你比较了解的机器学习的算法有哪些,说一下这些算法的过程和区别 2.网络的体系结构分为哪五层,每层分别有哪些协议 3.TCP和UDP的区别是什么,如果想发送即时消息应该用哪种 ...

  4. 两万字详细爬虫知识储备,数据采集与清洗基础习题(一)头歌参考答案

    数据采集习题参考答案,会持续更新,点个关注防丢失.为了方便寻找,按照头歌的门类从新整理了实训的分类,朋友们记得看标题哦,按标题寻找! 该篇为爬虫知识储备! 文章目录 实训一:HTML基础 第一关:初识 ...

  5. pwm波程序如何实现_【优秀成果】如何做好算法与程序实现教学的知识储备

    [摘要]<普通高中信息技术课程标准>(2017版)将算法与程序实现作为必修模块一的主要内容,并融入到多个单元和模块中.大部分教师缺少相应的知识储备,需要及时补充.本文结合笔者近3年的教学实 ...

  6. 小猪的Python学习之旅 —— 1.基础知识储备

    小猪的Python学习之旅 -- 1.基础知识储备 引言: (文章比较长,建议看目录按需学习-) 以前刚学编程的时候就对Python略有耳闻,不过学校只有C,C++,Java,C#. 和PHP有句&q ...

  7. 未明学院:大学生如何增强自己的知识储备?要是读书时知道这些就好了!

    01 旅行的意义 在本科阶段的空闲时间,室友一般会选择去实习,而自己则喜欢出去旅行. 因为大部分的时间都花在去游山玩水上了,所以有很长一段时间,对比室友,我总觉得自己成长得很慢. 但是,在某节课上,当 ...

  8. 【面试】1110- 一年前端社招面试总结,入职阿里菜鸟

    前言 本篇文章也是认识的一位好朋友「东仔」,也是和Fly一年的前端,最近在面试和他交流了很多,还有雨哥,后面继续约他写一份面试题.最近Fly哥也在疯狂面试,差不多大中厂小厂.得物.B站.爱奇艺.蚂蚁. ...

  9. 同事拿下阿里菜鸟P6offer,程序员:没看两本书还真不敢去跳槽

    前阵子,小天的同事程序员H偷偷的向阿里菜鸟投递了自己的简历... 不久后程序员H就收到了阿里菜鸟的面试通知,经历5轮面试,一举成功拿下offer并定级P6. 小天趁着未来的阿里大佬还在身边,向程序员H ...

最新文章

  1. 文本查找查找命令的grep 、egrep、fgrep用法的详解
  2. Linux下CMake简明教程(一)简单入门
  3. Docker进阶(制作镜像,共享卷,网络通信,私有仓库)
  4. phonegap html 缩放,phonegap常用事件总结(必看篇)
  5. [C++11]共享智能指针shared_ptr指定删除器
  6. airflow sql_alchemy_conn mysql_airflow使用mysql数据库,LocalExecutor并发调度
  7. jQuery实现鼠标划过展示大图的方法
  8. python棋盘最短路径_Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例...
  9. 计算浮点数相除的余(信息学奥赛一本通-T1029)
  10. C# 使用Task执行异步操作
  11. SpringCloud入门之Maven系统安装及配置
  12. java string su_JAVA基础--常用类String
  13. 车辆保险过户所需材料(郑州)
  14. oracle12C 创建用户学习
  15. IIS 管理器无法验证此内置帐户是否有访问权
  16. Mysql之数据库与sql
  17. 基于matlab的车牌识别
  18. Tier2 上1K Node的准备
  19. 移动端事件--touch事件的分类、touch事件的event对象、 其他触摸事件
  20. 58同城一面【前端】

热门文章

  1. 太难了~面试官让我结合案例讲讲自己对Spring事务传播行为的理解!
  2. 图解:从单个服务器扩展到百万用户的系统
  3. 鼠标划过表格行变色效果JS
  4. 数据结构-顺序查找算法的实现(C语言)
  5. mysql有两个结果集,MySQL:两个结果集的差异
  6. 向量笛卡尔积_如何创建向量的矢量的笛卡尔积?
  7. catch里面不想做任何处理_Java 如何优雅处理 Exception? 看完这 9 个示例你秒懂
  8. java 反射模式_java 设计模式——反射机制的应用
  9. 各省市数据中心机房工程新建项目汇总(2021年)
  10. 为什么不同新旧UPS电池不能混用?浮充电压是什么?