一 创建版本库

(1)

$ mkdir learngit

$ cd learngit

$ pwd /Users/michael/learngit

(2)

git init

二 提交文件

git status

git add aaa.txt

git commit -m "bug fixed"

git status

三 版本回滚

git log 查看日志

git log --pretty=oneline (一行显示日志)

git reset --HEAD 回滚到上一个的版本

git reset --id 回滚到某个版本 commit-id

git reflog 查看提交的id号

四 工作区 版本库 暂存区

(1)

git add

(2)

git commit

(3)

暂存区:stage

五 撤销修改

git checkout -- file 将工作区的修改撤销

eg:

git checkout -- test.txt (--后面有空格,否则报错)

git checkout 切换到另一个分支(later)

六 删除文件

(1)工作区删除了文件,希望提交到分支。步骤:删除版本库文件,提交

git rm test.txt

git commit -m "delete test.txt"

(2)在工作区误删了文件,希望恢复到版本库的文件

git checkout -- test.txt

git checkout :版本库的文件还原到工作区 例如上节的撤销修改

创建SSH密钥

七 远程仓库

(1)

创建SSH Key ,本地git库与Github仓库之间传输通过SSH加密的,

用户目录下,查看有无ssh目录,没有创建

ssh-keygen -t rsas -C "vanoracxn@163.com"

创建ssh目录成功,ssh目录有两个文件,id-rsa和id_rsa.pub。

(2)

登录Github→Account settings→Add SSH Key→title任意,文本框粘贴id_rsa.pub

八 添加远程库

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

git remote add origin git@github.com:vanoracxn/learngit.git

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

首次有很多提示,yes即可。

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

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

九 从远程库克隆

登陆GitHub,创建一个新的仓库,名字叫clone:

git clone git@github.com:vanoracxn/clone.git

十 分支管理

创建和合并分支

原理:

指针 master 和 dev

HEAD指向当前分支

查看分支 git branch

创建分支 git branch dev

切换分支 git checkout dev

创建并切换分支 git checkout -b dev

合并分支到当前分支 git merge dev (当前master, dev合并到当前master)

删除dev分支 git branch -d dev

十一 解决冲突

切换到分支featurel,修改文件aaa.txt,提交

切换到分支master,提交文件aaa.txt ,提交,

featurel合并到master时,提示:冲突

原理:

修改后再保存

OK了

原理:

git log --graph --pretty=oneline --abbrev-commit

小结

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

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

十二 分支管理策略

合并分支时,git使用Fast foward 模式,这种模式删除分支后不会保存分支信息。

强制禁用Fast foward模式,merge时会生成一个新的commit,这样,分支历史上就可以看到分支信息。

小结

Git分支十分强大,在团队开发中应该充分应用。

合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

十三:bug管理

情景:

在dev开发,未提交代码,线上bug急需解决

流程:

git stash

get checkout master

git checkout -b issue-1124

git add aaa.txt

git commit -m 'bug1124 is fixed'

git checkout dev

git stash list

恢复代码至dev

小结

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

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

十四 推送分支

十五 创建标签tag

1.创建tag

2.删除tag

3.查看所有的tag标签

4.给之前提交的某个commit_id标记tag

5.创建带有说明的标签,用-a指定标签名,-m指定说明文字:

6.还可以通过-s用私钥签名一个标签:

$ git tag -s v0.2 -m "signed version 0.2 released" fec145a

用PGP签名的标签是不可伪造的,因为可以验证PGP签名。验证签名的方法比较复杂

十六 操作标签

总结

十七 使用Github

使用pull request:

eg:

那就Fork一下我的仓库:https://github.com/michaelliao/learngit,创建一个your-github-id.txt的文本文件,写点自己学习Git的心得,然后推送一个pull request给我,我会视心情而定是否接受。

小结:

十八 自定义配置GIt

  • 颜色设置

启用默认的颜色设置可以使用如下命令

git config --global color.ui true

  • 1

如果不喜欢花花绿绿的颜色,可以将其关闭:

git config --global color.ui false

  • .gitignore文件

注意:

过滤某个文件,该文件必须是没有push到Github的文件。

  • 配置别名

-global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。

git 笔记总结的更多相关文章

  1. Git 笔记三 Git的初步使用

    Git 笔记三 Git的初步使用 在上一篇中,学习了如何配置Git环境,这一篇,开始学习Git的初步使用.Git的初步使用还是很简单的.总体上知道git init, git clone, git ad ...

  2. Git 笔记二-Git安装与初始配置

    git 笔记二-Git安装与初始配置 Git的安装 由于我日常生活和工作基本上都是在Windows上,因此此处只说windows上的安装.Windows上的安装和其他程序一样,只需要到http://g ...

  3. Git 笔记一 Git简介

    git 笔记一 什么是版本控制 所谓版本控制就是记录对文件的修改记录,这样以后就能回退到需要的 版本.比如你对一段代码进行了几次修改,有几次修改不想要了,如果 使用了版本控制,就可以回退到未做这些修改 ...

  4. 项目管理---git----快速使用git笔记(七)------coding.net项目管理多人操作的流程规范--合并代码审核

    我们在前面已经介绍了coding.net和本地git的基本用法. 但是多人协作开发时情况会复杂得多,所以我们最好有一些规范来保证项目多人开发顺利进行. 比如说 规范一 master代码分支  需要开启 ...

  5. 项目管理---git----快速使用git笔记(五)------本地项目代码提交到远程仓库---新建项目

    上一篇我们已经知道了怎么从远程仓库获取项目文件代码. 项目管理---git----快速使用git笔记(四)------远程项目代码的首次获取 git还有一种使用场景是 我本来在电脑里就有一个项目,现在 ...

  6. 项目管理---git----快速使用git笔记(四)------远程项目代码的首次获取

    使用git最常见的场景是 你需要参与到一个项目中,而这个项目的代码,同事已经上传到github或者https://coding.net了. 这时候他会给你一个项目代码的远程仓库链接. 例如: http ...

  7. GIT笔记:将项目发布到GITHUB

    GIT笔记:将项目发布到GITHUB 本机配置 1.在项目目录初始化GIT $ git init 2.用命令git add告诉Git,把文件添加到仓库 $ git add . // 这里是所有文件,用 ...

  8. GIT笔记:GITHUB教程【官方自译版】

    GIT笔记:将项目发布到GITHUB GITHUB是什么 GitHub是版本控制和协作的代码托管平台.它可以让你和其他人在任何地方一起工作. 1.创建一个新的仓库 存储库通常用于组织单个项目.存储库可 ...

  9. GIT笔记:将项目发布到码云

    GIT笔记:将项目发布到码云 发布步骤 1.码云创建项目 记录下项目的远程地址: https://gitee.com/mrsaber/ms_supplyAndSale.git 2.在本地创建GIT仓库 ...

  10. Note-Git:Git 笔记

    ylbtech-Note-Git:Git 笔记 1.返回顶部 ·  Git 分支管理: 主干/master.热修正/hotfix.预生产/release.开发develop.个人1(个人.小团队)/f ...

随机推荐

  1. linux下安装R第三方包forecast

    ERROR: [root@localhost soft]# R CMD INSTALL curl_3.1.tar.gz WARNING: ignoring environment value of R ...

  2. 第七周课程总结&实验报告五

    实验四 类的继承 实验目的 理解抽象类与接口的使用: 了解包的作用,掌握包的设计方法. 实验要求 掌握使用抽象类的方法. 掌握使用系统接口的技术和创建自定义接口的方法. 了解 Java 系统包的结构. ...

  3. LeetCode 18. 四数之和(4Sum)

    题目描述 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等? ...

  4. SAP MaxDB Backup and Restore

    Back up the data and redo log entries from the data and log areas of your database to data carriers ...

  5. 为什么重写了equals(),还要重写hashCode()?

    解决这个问题得先明白:hashCode 方法用于散列集合的查找,equals 方法用于判断两个对象是否相等. 第一步:具体背景(没有背景的讨论就是在耍流氓) 以HashMap中put方法为背景 第二步 ...

  6. centos7 搭建测试环境

    1. 下载JDK8 地址:https://download.oracle.com/otn/java/jdk/8u221-b11/230deb18db3e4014bb8e3e8324f81b43/jdk ...

  7. C++ 操作符重载实践 & java没有重载操作符的思路

    实践如下: #include <iostream> using namespace std; class Book{ private: int page; public: Book(int ...

  8. Android 面试汇总<三>

    1.3 计算机网络 基础 Q:五层协议的体系结构分别是什么?每一层都有哪些协议? 技术点:网络模型.协议 思路:分条解释每层名字以及协议 参考回答: 物理层 数据链路层:逻辑链路控制LLC.媒体接入控 ...

  9. Ruby小白入门笔记之<Rails项目目录结构>

    一 .流程分析 二.目录分析 DemoRails app (核心) assets  (web前端所需文件) images       (图片) javascripts  (JS代码) styleshe ...

  10. Jmeter(八)乱码处理

    发贴的内容和标题在进行参数化之后, 由于包含中文, 情理之中地出现了乱码(得意地笑, 坐等你跳坑中.)