Pro Git 学习笔记

文档地址:Pro Git
原文地址:PRO GIT 学习笔记

git常见命令

1、Git起步

初次运行Git前的配置

用户信息


git config --global user.name "your user name"
git config --global user.email "your email address"

文本编辑器

设置默认的文本编辑器:git config --global core.editor emacs

查看配置信息


git config --list

2、Git基础

创建Git仓库

在工作目录中初始化新仓库


git init

克隆现有仓库


git clone url

urlsshhttps两种,推荐使用ssh

检查当前文件状态


git status

跟踪最新文件


git add 文件名或*.js/css/html...或.

忽略不想提交的文件


cat .gitignore

查看已暂存和未暂存的更新


git diff
git diff --cached

提交更新


git commit -m "提交备注信息"

跳过使用暂存区域


git commit -a "提交备注信息"

在提交时使用git commit -a就会把已跟踪的已暂存文件一起提交,跳过git add步骤,即两个命令进行合并。

移除文件


git rm

从已跟踪文件清单中移除并删除工作目录中的指定文件,先使用git status查看跟踪文件清单,再使用git rm进行精准移除。

强制移除使用git rm -f,但不推荐使用。

从远程仓库中删除文件,使用:


git rm --cached 文件名/*.文件后缀/文件夹...

移动文件

对文件重命名或移动文件,可以使用:


git mv file_from file_to

查看提交历史


git log
git log -p -2

-p选项展开显示每次提交的内容差异,用-2显示最近的两次更新。

单词层面的对比,使用:


git log -p -U1 --word-diff

这个命令在代码检查中较少使用,在图文编辑中出现较多。

显示摘要信息,使用:


git log --stat

其他有用的命令:

--pretty选项可以指定使用完全不同于默认格式的方式展示提交历史,用oneline将每个提交放在一行显示,这在提交数很大时非常有用:


git log --pretty=online

format可以定制要显示的记录格式:


git log --pretty=format:"%h - %an, %ar : %s"

常用的格式占位符写法及其代表的意义

选项 说明
%H 提交对象(commit)的完整哈希字串
%h 提交对象的简短哈希字串
%T 树对象(tree)的完整哈希字串
%t 树对象的简短哈希字串
%P 父对象(parent)的完整哈希字串
%p 父对象的简短哈希字串
%an 作者(author)的名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用-date=选项定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者(committer)的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期,按多久以前的方式显示
%s 提交说明

添加ASCII字符串表示的简单图形


git log --pretty=format:"%h %s" --graph

git log 命令支持的选项

选项 说明
-p 按补丁格式显示每个更新之间的差异。
--word-diff word diff 格式显示差异。
--stat 显示每次更新的文件修改统计信息。
--shortstat 只显示 --stat 中最后的行数修改添加移除统计。
--name-only 仅在提交信息后显示已修改的文件清单。
--name-status 显示新增、修改、删除的文件清单。
--abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。
--relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。
--graph 显示 ASCII 图形表示的分支合并历史。
--pretty 使用其他格式显示历史提交信息。可用的选项包括 onelineshortfullfullerformat(后跟指定格式)。
--oneline --pretty=oneline --abbrev-commit 的简化用法。

限制输出长度

按照时间作限制的命令--since--until


git log --since=2.weeks

搜索条件

  • --author 显示指定作者的提交
  • --grep 搜索提交说明中的关键字
  • --all-match 同时满足这两个选项搜索条件的提交

其他常用的类似选项

选项 说明
-(n) 仅显示最近的 n 条提交
--since, --after 仅显示指定时间之后的提交。
--until, --before 仅显示指定时间之前的提交。
--author 仅显示指定作者相关的提交。
--committer 仅显示指定提交者相关的提交。

具体示例:


git log --pretty="%h - %s" --author=gitster --since="2018-10-01" \ --before="2008-11-01" --no-merges -- t/

撤消操作

修改最后一次提交


git commit --amend

取消已经暂存的文件


git reset HEAD 文件名

取消对文件的修改

这条命令谨慎使用


git checkout -- 文件名

远程仓库的使用

查看当前的远程库


git remote

显示对应的克隆地址


git remote -v

添加远程仓库


git remote add [shortname] url

抓取仓库信息


git fetch [shortname]

从远程仓库抓取数据

此命令会从远程仓库抓取数据到本地


git fetch [remote-name]

抓取克隆的远程仓库的更新数据


git fetch origin

fetch命令只是把远程仓库的数据抓取到本地,并不会自动合并到当前工作分支

推荐使用的拉取远程仓库数据,并进行数据合并操作的命令


git pull

推送数据到远程仓库


git push origin master

查看远程仓库信息


git remote show [remote-name]

远程仓库的删除和重命名

重命名远程仓库


git remote rename
git remote rename vue react

移除远程仓库


git remote rm vue

打标签

显示已有的标签


git tag

设定条件进行搜索


git tag -l "v1.4.2.*"

新建标签

轻量级标签


git tag

含附注的标签


git tag -a
git tag -a v1.4 -m "my version 1.4"

查看相应标签的版本信息


git show v1.4

签署标签


git tag -s
git tag -s v1.5 -m "my signed 1.5 tag"

验证标签


git tag -v [tag-name]
git tag -v v1.4.2.1

后期加注标签

忘记了加注标签,只要在打标签的时候跟上对应提交对象的校验和即可


git tag -a v1.2 9fceb02

分享标签


git push origin v1.5

一次推送所有本地新增标签


git push origin --tags

技巧和窍门

自动补全

windows系统下连续按Tab

Git 命令别名


git config --global alias.ci commit
git config --global alias.st status

Git 分支

新建testing分支


git branch testing

切换到testing分支


git checkout testing

分支的新建与合并

以上两个命令进行合并


git checkout -b testing

Git会把工作目录的内容恢复为检出某分支时它所指向的那个提交对象的快照。它会自动添加、删除和修改文件以确保目录的内容和当时提交时完全一样。

合并提交内容



git merge
git checkout master
git merge hotfix

删除工作分支


git branch -d hotfix

分支的合并

查看冲突 git status

调用可视化的合并工具解决冲突


git mergetool

分支的管理

查看各个分支最后一个提交对象的信息


git branch -v

查看哪些分支已被并入当前分支


git branch --merged

查看尚未合并的分支


git branch --no-merged

利用分支进行开发的工作流程

长期分支

特性分支

远程分支

同步远程服务器上数据到本地


git fetch origin

推送本地分支


git push origin master

在远程分支上分化出新的分支:


git checkout -b serverfix origin/serverfix

跟踪远程分支


git checkout -b sf origin/serverfix

删除远程分支

分支的衍合

整合分支方法


git merge
git rebase

从一个特性分支中再分出一个特性分支的历史


git rebase --onto master server client git checkout master
git merge server

衍合的风险

一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作。

服务器上的 Git

协议

Git可以四种主要的传输协议进行数据传输:本地协议、SSH协议、Git协议和HTTP协议。

在服务器上部署 Git


git clone --bare my_project my_project.git

把裸仓库移到服务器上

未完待续...

来源:https://segmentfault.com/a/1190000017913529

Pro Git 学习笔记的更多相关文章

  1. pro git学习笔记

  2. Git学习笔记(二) · 非典型性程序猿

    远程库的使用 前面说到的都是git在本地的操作,那么实际协作开发过程中我们肯定是要有一个远程版本库作为项目的核心版本库,也就是投入生产使用的版本.这里我们以 Github为例.Github是一个开放的 ...

  3. Git学习笔记与IntelliJ IDEA整合

    Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...

  4. Git学习笔记(10)——搭建Git服务器

    本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...

  5. Git学习笔记(四)

    一.忽略特殊文件 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件. 不需要从头写.gitignore文件,GitHub已经为我们 ...

  6. git 学习笔记6--remote & log

    git 学习笔记6--remote & log 创建SSH Keys ssh-keygen -t rsa -C "1050244110@qq.com" 本地关联远程 git ...

  7. 《Pro Git》笔记3:分支基本操作

    <Pro Git>笔记3:Git分支基本操作 分支使多线开发和合并非常容易.Git的分支就是一个指向提交对象的可变指针,极其轻量.Git的默认分支为master. 1.Git数据存储结构和 ...

  8. Git学习笔记---协作的一般流程

    一般的操作流程 1.pull 王小坤与另一个同事张大炮一起开发一个项目,张大炮昨天修改了数据库读写的api,优化了执行速度,并把read()函数改名成了Read(),下午下班之前把这些代码push到服 ...

  9. 【转帖】Git学习笔记 记录一下

    本文内容参考了廖雪峰老师的博文,并做了适当整理,方便大家查阅. 原帖地址 https://wangfanggang.com/Git/git/ 常用命令 仓库初始化 - git init 1 git i ...

随机推荐

  1. fireworks图片边缘化 fireworks羽化图片边缘的教程

    fireworks羽化图片边缘的教程如下: 1. 打开一个图片. 2.点击“工具”面板“位图”部分的“选取框”工具.也可以选择“椭圆选取框”工具. 3.选择部分图象. 4.在属性检查器中,“边缘”项中 ...

  2. js for in 遍历对象与数组

    遍历对象 let obj = { q:'9', w:'5', e:'2', t:'7', c:'3' } //for in 遍历对象 key为对象的属性名称,遍历属性值时用[]操作符访问 //通过[] ...

  3. js数组插入指定位置元素,删除指定位置元素,查找指定位置元素算法

    将元素x插入到顺序表L(数组)的第i个数据元素之前 function InsertSeqlist(L, x, i) { // 将元素x插入到顺序表L的第i个数据元素之前 if(L.length == ...

  4. SharePoint 2013 - Designer Workflow

    另一篇文章 SharePoint Designer - Workflow 1. 可以定义每个Stage的名称,并将Stage名称显示在工作流状态字段,相比于SP2010时仅有的in progress ...

  5. spring框架入门day01

    struts:web层,比较简单(ValueStack值栈,拦截器) hibernate:dao层,知识点杂 spring:service层,重要,讲多少用多少  --> [了解] spring ...

  6. linux下使用第三方商店安装应用

    安装 snap store 进行下载,相当与第三方应用商店,但是往往比某一个官方软件源里面的应用要丰富或更实用 到 snap docs 中选择你的 linux 版本进入安装文档,根据指示一步一步安装即 ...

  7. python、数据分析师、算法工程师的学习计划

    1.前言 最近(2018.4.1)在百忙之中开通了博客,希望能够把自己所学所想沉淀下来,这篇是我开始系统学习python,成为数据分析师和算法工程师之路的计划,望有志于为同样目标奋斗的数据猿一起交流和 ...

  8. libevent evbuffer参考文章

    https://blog.csdn.net/FreeeLinux/article/details/52799951 http://cache.baiducontent.com/c?m=9d78d513 ...

  9. 从今天開始学习iOS开发(iOS 7版)--实现一款App之Foundation框架的使用

    iOSFoundation框架 当你着手为你的应用编写代码的时候,你会发现有很多可供使用的Objective-C的框架类,当中尤其重要的就是基础框架类.它为平台全部的应用提供基础服务.基础框架类中包括 ...

  10. luogu P1121 环状最大两段子段和

    嘟嘟嘟 一道说难也难说简单也简单的dp题. 我觉得我的(有篇题解)做法就属于特别简单的. 平时遇到环的问题都是断环为链,但这道题给了一种新的思路. 观察一下,最后的答案无非就这两种:xxx--xx-- ...