1、配置用户名,邮箱

git config --global user.name "Mike"
git config --global user.email Mike@example.com

2、查看配置信息

git config --list

也可以直接查阅某个环境变量的设定,只要把特定的名字跟在后面即可

git config user.name

3、获取帮助

git help <verb>
git <verb> --help
man git <verb>

例如 git help config

4、初始化仓库

git init

5、克隆仓库到本地

git clone url <自定义项目目录名称>

6、检查当前文件状态

git status

7、跟踪新文件

git add fileName

8、忽略某些文件

创建一个名为.gitignore的文件,列出要忽略的文件模式

cat .gitignore
*.[oa]
*~

第一行告诉 Git 忽略所有以 .o 或 .a 结尾的文件。一般这类对象文件和存档文件都是编译过程中出现 的,我们用不着跟踪它们的版本。第二行告诉 Git 忽略所有以波浪符(~)结尾的文件,许多文本编辑软件 (比如 Emacs)都用这样的文件名保存副本。此外,你可能还需要忽略 log,tmp 或者 pid 目录,以 自动 生成的文档等等。要养成一开始就设置好 .gitignore 文件的习惯,以免将来误提交这类无用的文件。

文件 .gitignore 的格式规范如下:
• 所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
• 可以使用标准的 glob 模式匹配。
• 匹配模式最后跟 斜杠(/)说明要忽略的是目录。
• 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取 。

所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配
任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)
只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配
(比如 [0-9] 表示匹配所有 0 到 9 的数字)。

9、查看具体的修改

git status只能查看修改过的文件,使用git diff可以查看具体修改的地方

1)查看尚未暂存的文件更新了哪些部分

git diff

这个命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容

2) 查看已经暂存的文件和上次提交时的快照之间的差异

git diff --cached

Note:单单git diff只是显示还没有暂存起来的改动,而不是这次工作和上次提交之间的差异。所以有时候你一下子暂存了所有更新过的文件后,运行git diff后却什么也没有,就是这个原因。

10、提交更新

每次准备提交前,先用git status查看是不是都已暂存起来了,然后再运行提交命令git commit

git commit -m description

在一行命令中提交更新

记住,提交时记录的是暂存区域的快照,任何还未暂存的仍然保持已修改状态,可以在下次提交时纳入版本管理。每一次运行提交操作,都是对项目做一次快照,以后可以回到这个状态,或者进行比较。

11、跳过使用暂存区域

在提交的时候,给git commit 加上-a选项,git就会自动把所有已经跟踪过的文件暂存一并提交,从而跳过git add步骤

git commit -a -m description

12、移除文件

使用git rm命令,从已跟踪文件清单中移除,即从暂存区域移除,并从工作目录中删除指定文件

git rm fileName

最后提交的时候,该文件就不再纳入版本管理。如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项-f。

另一种情况是我们需要从git仓库删除某个文件,但希望保留在当前工作目录中。也就是说只是从跟踪清单中删除。比如一些大型日志文件,不小心纳入仓库后,要移除跟踪但不删除文件,以便稍后在.gitignore文件中补上,用--cached选项即可

git rm --cached fileName

13、移动文件

git mv file_from file_to

14、查看提交历史

git log #按提交时间列出所有的更新,最近的更新排在最上面
git log -p - # -p选项展开显示每次提交的内容差异 - 则显示最近的两次更新
git log --stat # 仅显示简要的增改行数统计
git log --pretty=option # 指定使用完全不同于默认格式的方式展开提交历史
git log --pretty=online #将所有提交在一行显示
git log --pretty=format:"指定格式" # 定制要显示的记录格式
git log --pretty=format:"%h - %n, %ar:%s"

限制输出长度还有一些其他常用的选项:

选项 说明
-(n) 仅显示最近的 n 条提交
--since, --after 仅显示指定时间之后的提交。

--until, --before 仅显示指定时间之前的提交。

--author 仅显示指定作者相关的提交。

--committer 仅显示指定提交者相关的提交。

15、撤销操作

1)修改最后一次提交

撤销刚才的提交操作,可以使用--amend选项重新提交

git commit --amend

此命令将使用当前的暂存区域快照提交。如果刚才提交完没有作任何改动,直接运行命令的话,相当于有机会重新编辑提交说明,而所提交的文件快照和之前的一样。

如果刚才提交时忘了暂存某些修改,可以补充上暂存操作,然后再运行--amend提交

2)取消已经暂存的文件

git reset HEAD <fileName>

3)取消对文件的修改

对为暂存区域的文件,取消修改,回到之前的状态

git checkout -- <fileName>

16、远程仓库的使用

1)查看当前的远程库

git remote
git remote -v # 显示对应的克隆地址

2)添加远程仓库

添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用

git remote add [shortname] [url]

3) 从远程仓库抓取数据

git fetch [remote-name]

fetch命令只是将远端数据拉到本地仓库,并不自动合并到当前工作分支,只有当你确实准备好了,才能手工合并。如果设置了某个分支用于跟踪某个远端仓库的分支,可以使用git pull命令自动抓取数据下来,然后将远端分支自动合并到本地仓库中当前分支。

4)推送数据到远程仓库

将本地仓库中的数据推送到远程仓库

git push [remote-name] [branch-name]

5)查看远程仓库的信息

git remote show [remote-name]

6)远程仓库的删除和重命名

git remote rename orginName newName # 修改某个远程仓库的简短名称
git remote rm remoteName # 移除对应的远端仓库

17、打标签

1)列显现有标签的命令

git tag

2) 新建标签

标签有两种类型:轻量级标签和含附注的标签。

轻量级标签:像是个不会变化的分支,实际上它就是个指向特定提交对象的引用,保存着对应提交对象的校验和信息的文件

含附注标签:存储在仓库中的一个独立对象,有自身的校验和信息,包含着标签名字,电子邮件和日期以及标签说明,标签本身也允许使用GPG来签署和验证。

一般建议使用含附注型标签,以便保留相关信息;如果只是零时性加注标签,或者不需要其他旁注额外信息,用轻量级标签也没问题。

i. 含附注的标签

git tag -a tagName -m "description for tag"

查看相应标签的版本信息,并连同显示打标签时的提交对象。

git show tagName

ii. 轻量级标签

git tag tagName

3) 后期加注标签

可以后期对早期某次提交加注标签

git log --pretty=oneline  # 显示所有历史提交
git tag -a tagName 校验和 # 打标签时跟上对应提交对象的校验和(或前几位字符) 

4)分享标签

默认情况下,git push并不会把标签传送到远端服务器上,只有通过显式命令才能分享标签到远端仓库

git push remoteName [tagName]

如果要一次推送所有(本地新增的)标签上去,可以使用--tags选项

git push remoteName --tags

18、git命令别名

git config --global alias.别名 原名

下面看几个例子

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status

现在要输入git commit只需键入git ci即可。

2)创建新命令

比如取消暂存文件时输入比较繁琐

git reset HEAD fileName

可以设置一下

git config --global alias.unstage 'reset HEAD --'

因此只需要输入git unstage fileName即可

设置last命令

git config --global alias.last 'log -l HEAD'

使用git last即可查看最后一次提交信息

git学习一——Pro-Git的更多相关文章

  1. git学习------>写给 Git 初学者的7个建议

    PS:本文转载于(http://blog.jobbole.com/50603/),本文由 伯乐在线 - 吴鹏煜 翻译. 英文出处:(http://sixrevisions.com/web-develo ...

  2. Git学习系列之Git基本操作拉取项目(图文详解)

    前面博客 Git学习系列之Git基本操作推送项目(图文详解) 当然,如果多人协作,或者多个客户端进行修改,那么我们还要拉取(Pull ... )别人推送到在线仓库的内容下来. 大神们是不推荐使用 pu ...

  3. Git学习系列之Git基本操作推送项目(图文详解)

    前面博客 Git学习系列之Git基本操作提交项目(图文详解) 如果完成到一定程度,那么可以推送到远端在线仓库. 推送之前,请确保你已经设置了全局的 user.name 和 user.email, 如果 ...

  4. Git学习系列之Git基本操作提交项目(图文详解)

    前面博客 Git学习系列之Git基本操作克隆项目(图文详解) 然后可以 cd 切换到 LispGentleIntro 目录, 新增或者修改某些文件.这里只是模拟一下操作, 实际情况可能是 使用 Ecl ...

  5. Git学习系列之Git 的缺点有哪些?

    不多说,直接上干货 前面,谈及了 Git学习系列之Git 的优势有哪些? 缺点: (1)资料少(起码中文资料很少). (2)学习周期相对而言比较长. (3)不符合常规思维. (4)代码保密性差,一旦开 ...

  6. git学习(六):git stash

    对于更改操作的处理 使用git status命令可以看到当前工作区的状态: git status // 查看工作区的状态 // 对于已经git add工作区中文件 git reset HEAD < ...

  7. Git学习系列之Git是什么?

    前言 现在主流IDE里,都集成git了. https://git-scm.com/docs 史上最浅显易懂的Git教程! 为什么要编写这个教程?因为我在学习Git的过程中,买过书,也在网上Google ...

  8. Git学习系列之Git产生的背景

    不多说,直接上干货! 史上最浅显易懂的Git教程! 为什么要编写这个教程?因为我在学习Git的过程中,买过书,也在网上Google了一堆Git相关的文章和教程,但令人失望的是,这些教程不是难得令人发指 ...

  9. Git学习1:Git起步

    本系列文章部分原理和命令相关内容是从 https://git-scm.com/book/zh/v2 摘录,软件实际使用是总结自己的实践经验成文. 1. 关于版本控制 版本控制是一种记录一个或若干文件内 ...

  10. mzy git学习,初识git(一)

    GIT学习 git工作区.暂存区.本地库.远程库 工作区:实际上我们工作的地方,进行写代码或者文件的地方. 暂存区:我们执行了git add 操作之后,就会被提交到暂存区. 本地库:其实最后我们需要执 ...

随机推荐

  1. java-面向对象-封装-this-构造函数

    概要图 一 构造函数 需求:为了描述事物更准确,发现事物对应的很多对象一创建时, 就有了,一些初始化的数据.在类中该如何完成的.   通过Java中的另一个小技术完成:就是构造函数.对象本身就是构造出 ...

  2. ubuntu安装django

    sudo apt-get install python-django -y#django操作mysql数据库时还需要安装python-mysqldb驱动,当然mysql安装是必须的前提 sudo ap ...

  3. MaxCompute问答整理之7月

    本文是基于本人对MaxCompute产品的学习进度,再结合开发者社区里面的一些问题,进而整理成文.希望对大家有所帮助. 问题一.DataWorks V2.0简单模式和标准模式的区别?公司数仓的数据上云 ...

  4. web前端学习(二)html学习笔记部分(7)--web存储2

    1.2.20  web存储 1.2.20.1  Web存储-客户端存储数据新方法 1.两种方式 1)localStorage - 没有时间限制的数据存储 2)针对一个sessionStorage - ...

  5. pycharm 测试执行成功,但却无法成功生成测试报告(使用HTMLTestRunner)的解决办法

    pycharm 测试执行成功,在对应的测试路径下确未生成测试报告.反复确认代码也是没有问题的,在网上查找了原因:简单的unittest运行是不执行main方法的.是允许方式问题. 于是在mian方法里 ...

  6. SVN failed: 405 Method Not Allowed

    SVN update 时,错误:PROPFIND request on '/svn/xxxx' failed: 405 Method Not Allowed. 解决办法如下: 第一步:查看SVN服务器 ...

  7. R语言基础画图/绘图/作图

    R语言基础画图/绘图/作图 R语言基础画图 R语言免费且开源,其强大和自由的画图功能,深受广大学生和可视化工作人员喜爱,这篇文章对如何使用R语言作基本的图形,如直方图,点图,饼状图以及箱线图进行简单介 ...

  8. Android消息机制使用注意事项,防止泄漏

    在Android的线程通信当中,使用频率最多的就是Android的消息处理机制(Handler.send().View.post().Asynctask.excute()等等都使用到了消息处理机制). ...

  9. iOS 自定义Tabbar实现push动画隐藏效果

    http://wonderffee.github.io/blog/2013/08/07/hide-custom-tab-bar-with-animation-when-push/ 在之前的一篇文章(链 ...

  10. html2canvas截取屏幕的方法

    html2canvas截取屏幕的方法 需要放在服务上运行,否则会报错, 放在服务器里,完美运行  处理截屏模糊的方法 html2canvas 0.5.0-beta3解决截图模糊问题 需要引入html2 ...