记录 git 常用的操作命令总结
2016-12-15 16:44:04
作为一名开发者,熟悉使用 git 代码管理工具是一项必备的基本技能。git 相较 SVN 而言,其优点不言而喻。git 的功能非常强大,其包括的操作命令也非常的多,但是从实用性而言,很多命令可能我们一辈子也用不到,这里我只记录一下自己经常使用的 git 命令,熟练使用了这些命令,其实已经可以完全得心应手的使用 git 工具了。我所使用的开发环境是在 CentOS6.5 系统,下边的操作命令都是在 CentOS6.5 上进行实验通过的。
一、安装 git 工具
1. CentOS/RedHat 系统安装:
[root@git ~]# yum install -y git
2. Ubuntu/Debian 系统安装:
[root@git ~]# apt-get install -y git
3. All OS 源码安装:
# 解压 进入代码目录
[root@git ~]# ./configure && make && make install
4. 安装完成后,还需要最后一步设置,在命令行输入:
[root@git ~]# git config --global user.name "liwei0526vip" [root@git ~]# git config --global user.email "liwei0526vip@163.com"
通过 git config 命令的 --global 参数设置了 git 的用户名和用户邮箱,默认情况下这台机器上所有的 git 仓库都会使用这个配置,当然也可以对某个仓库指定具体不同的用户名和用户邮箱。这里不用担心安全问题,后边有说明具体的身份验证。
二、创建版本仓库
仓库,英文名 repository 。可以简单理解成一个目录,这个目录里面的所有文件都可以被 git 管理起来,每个文件的修改、删除, git 都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以"还原"。
1. 首先要给仓库创建一个空目录:
[root@git ~]# mkdir learngit [root@git ~]# cd learngit [root@git learngit]# pwd /root/learngit
2. 通过 git init 命令把这个目录变成 git 可以管理的仓库:
[root@git learngit]# git init Initialized empty Git repository in /root/learngit/.git/ [root@git learngit]# ls -a . .. .git
可以发现当前目录下多了一个 .git 的目录,这个目录是 git 来跟踪管理版本库的,千万不要手动修改这个目录里面的文件,否则就把 git 仓库给破坏了。
3. 关于文件变动的跟踪
首先这里再明确一下,所有的版本控制系统,其实只能跟踪文本文件的改动,比如 TXT 文件,网页,所有的程序代码等等, Git 也不例外。版本控制系统可以告诉你每次的改动,比如在第 5 行加了一个单词 "Linux" ,在第 8 行删了一个单词 "Windows" 。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从 100KB 改成了 120KB ,但到底改了啥,版本控制系统不知道,也没法知道。
4. 关于编码
因为文本是有编码的,如果没有历史遗留问题,强烈建议使用标准的 UTF-8 编码,所有语言使用同一种编码,既没有冲突,又被所有平台所支持。
三、把文件添加到版本库
1.编写一个 readme.txt 文件,内容如下:
Git is a version control system. Git is free software.
2.用命令 git add 把文件添加到仓库:
[root@git learngit]# git add readme.txt
# 执行上面的命令,没有任何显示,这就对了 Unix 的哲学是"没有消息就是好消息",说明添加成功
3.用命令 git commit 把文件提交到仓库:
[root@git learngit]# git commit -m "wrote a readme file" [master (root-commit) 00f58fb] wrote a readme file insertions(+) create mode readme.txt
4.简单解释一下 git commit 命令,-m 后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。为什么 git 添加文件需要 add 和 commit 两步呢?因为 commit 可以一次提交很多文件,所以你可以多次 add 不同的文件,比如:
[root@git learngit]# git add file1.txt [root@git learngit]# git add file2.txt file3.txt [root@git learngit]# git commit -m "add 3 files."
四、初步修改并提交
1. 继续修改内容
我们已经成功地添加并提交了一个 readme.txt 文件,继续修改 readme.txt 文件,改成如下内容:
Git is a distributed version control system. Git is free software.
2. 运行 git status 命令看看结果
[root@git ~]# git status # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # modified: readme.txt no changes added to commit (use "git add" and/or "git commit -a")
git status 命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们 readme.txt 被修改过了,但还没有准备提交的修改
3. 使用 git diff 查看修改了什么内容
虽然 Git 告诉我们 readme.txt 被修改了,但如果能看看具体修改了什么内容,自然是很好的。比如你休假两周从国外回来,第一天上班时,已经记不清上次怎么修改的 readme.txt ,所以,需要用 git diff 这个命令看看:
[root@git ~]# git diff readme.txt diff --git a/readme.txt b/readme.txt index 46d49bf..9247db6 --- a/readme.txt +++ b/readme.txt @@ -, +, @@ -Git is a version control system. +Git is a distributed version control system. Git is free software.
git diff 顾名思义就是查看 difference ,显示的格式正是 Unix 通用的 diff 格式,可以从上面的命令输出看到,我们在第一行添加了一个 "distributed" 单词。
4. 提交修改
知道了对 readme.txt 作了什么修改后,再把它提交到仓库就放心多了,提交修改和提交新文件是一样的两步: add 和 commit
[root@git ~]# git add readme.txt
在执行第二步 git commit
之前,我们再运行 git status
看看当前仓库的状态
[root@git ~]# git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # modified: readme.txt
git status
告诉我们,将要被提交的修改包括 readme.txt,下一步,就可以放心地提交了
[root@git ~]# git commit -m "add distributed" # 提交后,我们再用 git status 命令看看仓库的当前状态 [root@git ~]# git status # On branch master nothing to commit (working directory clean)