记录 git 常用的操作命令总结

时间:2022-01-28 12:30:02

记录 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)