我使用最频繁的10个git命令

23 Apr 2016 我使用最频繁的10个git命令

现在基本每天都在使用git,但是git的命令特别多,要全部搞懂需要花大量时间去实践学习,由于我使用git只是为了维护我的博客、平时写的一些代码和翻译一些书,用不到git很多的高级功能。因此在使用git过程中发现,使用得最多的命令是以下10个:

  • git clone
  • git init
  • git status
  • git add
  • git commit
  • git log
  • git diff
  • git push
  • git pull
  • git checkout

在介绍这10个命令之前,先介绍下git中4个术语:

  • 工作区(workspace):简单来说就是你写代码的地方;
  • 暂存区(index):对某个文件使用git add命令后,该文件就从工作去转移到暂存区;
  • 本地仓库(repository):对使用过git add命令的文件,执行git commit后,该文件就转移到本地仓库,这样该文件就被git管理了;
  • 远程仓库(remote):可以认为这是你的github或者你自己的git服务器。

这里分别解释下这10个命令的主要功能:

1)git clone

这个命令可以将远程仓库克隆到本地仓库。例如克隆我github的一个仓库到本地:

root@leo:test# git clone git@github.com:songleo/update_hosts.git
Cloning into 'update_hosts'...
remote: Counting objects: 50, done.
remote: Total 50 (delta 0), reused 0 (delta 0), pack-reused 50
Receiving objects: 100% (50/50), 6.21 MiB | 103.00 KiB/s, done.
Resolving deltas: 100% (23/23), done.
Checking connectivity... done.

你会在执行该命令的目录下发现一个update_hosts目录(这个仓库主要功能是自动更新你电脑的hosts文件上谷歌)。

2)git init

这个命令会创建一个本地仓库,将执行该命令的当前目录变成git可以管理的仓库,执行该命令后,会在该目录生成一个.git目录。

root@leo:test# git init
Initialized empty Git repository in /media/sf_share/test/.git/

3)git status

该命令主要功能是查看git仓库状态。例如在执行完git init命令的目录中,添加一个文件gitdemo。执行git status时:

root@leo:test# git status
On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

gitdemo

nothing added to commit but untracked files present (use "git add" to track)

会提示gitdemo文件还没有被git追踪。需要执行git add命令将该文件提交到暂存区。

4)git add

当你修改一个文件后,使用git add将该文件从工作去提交到暂存区。例如:

root@leo:test# git add gitdemo

将gitdemo文件提交到缓存区。在执行git status时,输出如下:

root@leo:test# git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

new file:   gitdemo

现在gitdemo文件已经在暂存区了,就算你rm删除该文件也可以恢复该文件,但是此时该文件还没有提交到本地仓库中。

5)git commit

这个命令主要功能是将暂存区的文件提交到本地仓库。例如将修改的gitdemo文件提交到本地仓库:

root@leo:test# git commit  -m "first commit"
[master (root-commit) 4973272] first commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 gitdemo

然后再执行git status时:

root@leo:test# git status
On branch master
nothing to commit, working directory clean

提示没有可提交的文件。此时该文件就版本的概念了,本次提交就是一个版本。

6)git log

该命令主要是查看每次提交的日志的。例如:

root@leo:test# git log
commit 497327268b256014d137fe4417f0970b3d25ef31
Author: songleo <lisong1205@126.com>
Date:   Sun Apr 24 13:33:19 2016 +0800

    first commit

可以看到我们提交的日志。

7)git diff

该命令主要功能是显示工作区和暂存区及提交到仓库之间的差异。例如当我在工作去修改git文件后,执行git diff命令:

root@leo:test# echo test >gitdemo
root@leo:test# git diff
diff --git a/gitdemo b/gitdemo
index e69de29..9daeafb 100644
--- a/gitdemo
+++ b/gitdemo
@@ -0,0 +1 @@
+test

可以看到提示添加了一行内容test。将该文件提交到暂存区在执行git diff时没有任何输出。但是执行git diff HEAD时会提示暂存区和上一次提交时的差异,即添加了一行内容:

root@leo:test# git diff HEAD
diff --git a/gitdemo b/gitdemo
index e69de29..9daeafb 100644
--- a/gitdemo
+++ b/gitdemo
@@ -0,0 +1 @@
+test

8)git push

该命令会将本地仓库的修改推送到远程仓库。

9)git pull

该命令会将远程仓库取回,并和本地仓库合并。例如,这里将远程仓库update_hosts取回本地和本地仓库合并:

root@leo:update_hosts# git pull
From github.com:songleo/update_hosts
 - [new tag]         v1.1       -> v1.1
Already up-to-date.

可以看见远程仓库添加了一个新的标签(tag),现在本次仓库也有一个新标签。

10)git checkout

该命令主要是为了恢复提交到暂存区和本地仓库的文件到工作区或者暂存区区。例如恢复提交到缓存区的文件到工作区:

root@leo:test# git checkout gitdemo

总结

本文只是简单介绍了我在使用gi过程中的一些常用及入门级的命令,如果想继续深入学习git可以查看参考文档的2个链接。

附上我的git别名:

alias gad='git add --all'
alias gbr='git branch'
alias gck='git checkout'
alias gcl='git clone'
alias gco='git commit'
alias gdf='git diff'
alias glg='git log'
alias gph='git push'
alias gpu='git pull'
alias gst='git status'

参考

http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html

ps:最近在看一本书:《写给大家看的设计书》,貌似排版有点改进了Orz

LEo at 23:40

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯DevOps

Git快速入门

git作为现在最为流行的版本管理系统,大部分公司都使用git进行版本控制,并且最大程序员交友网站github也是在git的基础上建立的。 很多人认为git难,在...

20640
来自专栏编程心路

Github学习文档-2

你可能会问学习 GitHub 和 Git 有什么关系吗?首先 GitHub 的功能本身就是基于 Git 来实现。现在的问题是 Git 是什么?Git 是一个开源...

25930
来自专栏玩转JavaEE

Git中的各种后悔药

Git强大的撤销、版本回退功能,让我们在开发的过程中能够随意的回到任何一个时间点的状态,本文我们就来看看Git中的各种后悔药! 本文是Git系列的第三篇,了解前...

28740
来自专栏我的博客

ES中的分布式搜索

一.查询阶段 查询会广播到索引的每个分片(主分片或者副本分片),每个分片搜索并构建一个匹配结果的优先队列(存储top-n文档有序列表) 步骤: 1.发送请...

378110
来自专栏漫漫深度学习路

git 常用流程

git 常用流程 关于 ssh key 第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_r...

22150
来自专栏浪淘沙

Git学习总结2

13.远程仓库 将本地Git 与Github来链接起来,传输通过ssh加密。 (1)创建SSH Key 打开本地G...

7810
来自专栏腾讯DevOps

Git的增改查删

Windows系统:在官网直接下载https://git-scm.com/downloads,安装即可

29740
来自专栏企鹅号快讯

写在2018第一天:编程之路始于Git

git是目前世界上使用最广泛的分布式版本控制系统,由大名鼎鼎的Linus花了两周时间写成,同时在2008年使用给git作为唯一版本库格式托管平台gitHub网站...

19350
来自专栏闪电gogogo的专栏

Git学习笔记

此篇笔记是学习参考廖雪峰老师的Git教程,附上学习网址:https://www.liaoxuefeng.com/wiki/0013739516305929606...

25780
来自专栏PHP在线

svn自动检出修改的文件列表

开发完一个功能,我们需要把该功能修改的所有文件找出来,增量更新到发布环境,如果使用svn log查看svn记录,没有排重,信息比较详细,不容易筛选,这样将会花费...

23160

扫码关注云+社区

领取腾讯云代金券