首先安装 Git,Git 官网 会推荐适合自己系统的安装包,网速慢的同学可以去百度网盘下载 Git-2.21.0-64-bit Windows 版本 提取码:tz9d。
通过几天的学习,熟悉了 git 的一些常用命令,要用熟练和操作更复杂的功能还必须继续学习。不过 git 作为工具,它是用来提高我们的工作效率的工具,系统的学习之后可以暂且放放,等到以后实际项目中用到了不会的东西再来问专家或通过搜索引擎查询解决办法。
这篇文章仅供自己以后翻阅加深记忆,要系统的学习 git 教程(中文版),请移步到 liaoxuefeng.com 学习 git 教程部分。
我使用的是 windows 系统,所以使用 Git Bash 输入命令。首先,全部命令,再实例结合命令:
一、命令:
1. 显示当前的目录,pwd (Print Working Directory)
$ pwd
2. 进入指定目录,cd (Change Directory)
$ cd
3. 返回到上一级目录
$ cd ..
4. 配置
$ git config --global user.name "Your Name" $ git config --global user.email "email@example.com"
5. 创建空目录,mkdir
$ mkdir
6. 初始化该目录
$ git init
7. 把文件添加到仓库
$ git add <filename>
一次添加多个文件(添加新文件和编辑过的文件不包括删除的文件)
$ git add .
8. 把文件提交到仓库
$ git commit -m "added one line"
9. 查看状态
$ git status
10. 查看修改内容
$ git diff
如果想要查看两次提交的差异(具体修改了哪些文件):
$ git diff bash1 bash2 --stat
如果想要查看两次提交的差异中,修改的文件中具体修改了哪些内容的话:
把 --stat 换成具体的文件就行了。
$ git diff bash1 bash2 <filename>
这两个命令非常有用,有这样一些场景:
一、如果你改了很多文件,同时 commit 提交了,但是没有网络无法 push 到远程。或许你需要同事帮忙,他们帮你更改这些文件然后 push 到远程。你没有网络不可能直接把文件发给他们,所以就需要知道具体更改了哪些文件,然后知道改动的文件改了哪些内容。让他们添加上,然后commit和push,你自己撤销你所做的更改。
二、如果有两个很相似的系统,需要移植你所做的更改,但是你不可能直接复制替换源文件,因为这样也会引起冲突或者覆盖掉原本不同的地方。这个时候就需要知道更改了哪些内容,然后每一个文件移植过去。
11. 显示提交历史
$ git log
用一行显示提交历史
$ git log --pretty=oneline
12. 版本回退(回退到上一版本)
$ git reset --hard HEAD^
回退到指定版本
$ git reset --hard <commit id>
13. 查看更改历史(包括添加、提交、删除、撤销...)
$ git reflog
14. 查看文件内容
$ cat <filename>
15. 撤销修改(未添加到暂存区)
$ git checkout -- <filename>
16. 撤销修改(已添加到暂存区)
$ git reset HEAD <filename>
$ git checkout -- <filename>
17. 撤销修改(已提交到版本库)
$ git reset --hard HEAD^ $ git reset HEAD <filename> $ git checkout -- <filename>
18. 删除文件(删除工作区的文件)
$ rm test.txt
彻底删除文件,同时删除版本库里的文件
$ rm <filename> $ git rm <filename> $ git commit -m "deleted a file"
二、实例结合命令
1. 显示当前的目录,pwd (Print Working Directory)
$ pwd
当前目录是 /c/User/Administrator,也就是说,我的 Git Bash 应用安装在这个目录下?
2. 进入指定目录,cd (Change Directory)
$ cd
这个 bootstrap 是我从 https://github.com/twbs/bootstrap (bootstrap 在 github 上的主页) "Fork" 到自己的账号下后克隆到本地的。我选择的是 “v4-dev” 这个分支,所以后面会有 /bootstrap (v4-dev) 这样的字符出现。
3. 返回到上一级目录
$ cd ..
输入 "cd .." 然后回车,当前目录从 "/c/Users/Administrator/bootstrap/dist" 变成了 "/c/Users/Administrator/bootstrap"。"cd" 与 ".." 之间有一个空格。
4. 配置
$ git config --global user.name "Your Name" $ git config --global user.email "email@example.com"
配置的目的,表示我的这台电脑使用的是 "xinjie-just" 这个账号。
5. 创建空目录,mkdir
$ mkdir
执行该命令后,在我的根目录下就新增了一个文件夹 running:
6. 初始化该目录,将该目录变成 git 可以管理的仓库:
$ cd running $ git init Initialized empty Git repository in C:/Users/Administrator/running/.git/
首先进入该仓库,然后将其初始化,init(initialization)。
7. 把文件添加到仓库
$ git add <filename>
我在本地添加了一个新文件 readme.txt,然后添加了一段话。
$ git add .
一次添加多个文件(添加新文件和编辑过的文件不包括删除的文件) :
8. 把文件提交到仓库
$ git commit -m "added one line"
"-m" 后面的 "added one line" 为注释,解释这次提交的意图,可任意填写容易理解的话。
添加文件到Git仓库,分两步:
第一步,使用命令 git add <filename>
,注意,可反复多次使用,添加多个文件;
第二步,使用命令 git commit
,完成。
9. 查看状态
$ git status
结果告诉我们,在 master 分支上,没有东西需要提交,工作目录是干净的。
10. 查看修改内容
$ git diff
在上次我提交文件后,在最后添加了空行和一段话。diff 是 difference(改变) 的缩写。
11. 显示提交历史
$ git log
$ git log --pretty=oneline
使用 git log 可显示更改历史,包括了版本号、作者、日期、提交注释。使用 git log --pretty=oneline 会用一行显示一条历史记录,看起来更清晰明了。
12. 版本回退
$ git reset --hard HEAD^
HEAD 表示当前版本号,HEAD^ 表示上一个版本号,HEAD^^表示上两个版本号,与 HEAD~2 意思相同。
这里回到上一版本。
回退到指定版本,还有更快捷的方法。
$ git reset --hard <commit id>
这里使用版本号回到上一版本。
13. 查看文件内容
$ cat <filename>
如上(12点) cat readme.txt 查看文件内容。
14. 查看更改历史
$ git reflog
查看更改历史,不仅仅是提交历史。包括了添加版本、版本回退、撤销修改等等。
15. 撤销修改(未添加到暂存区)
$ git checkout -- <filename>
我在 readme.txt 中添加了一行,然后使用 cat readme.txt 显示其内容,随后使用 git checkout -- readme.txt 将其撤销,再使用 cat readme.txt 显示内容。
使用这种命令有一个前提,是还没有使用 git add 将文件添加到暂存区。
16. 撤销修改(已添加到暂存区)
$ git reset HEAD <filename>
我在 readme.txt 文件中添加了配速这一行。然后验证 git reset HEAD readme.txt 这个命令:
1. 使用 git add readme.txt 命令将文件提交到暂存区;
2. 使用 git reset HEAD readme.txt 命令撤销暂存区里的新内容;
3. 使用 git checkout -- readme.txt 命令将工作区里的内容和暂存区里的内容保持一致(即撤销工作区最近的一次修改)。
17. 撤销修改(已经提交到仓库)
如果已经将修改提交到仓库了,而要撤销这次修改,需要分三步完成:
第一步:返回到上一版本库,使用命令 git reset --hard HEAD^ ;
第二步:撤销暂存区里的修改,使用命令 git reset HEAD readme.txt ;
第三步:撤销工作区里的修改,使用命令 git checkout -- readme.txt 。
$ git add readme.txt $ git commit -m "added Foot Strike" [master a7ab6d5] added Foot Strike 1 file changed, 3 insertions(+), 1 deletion(-) $ git status On branch master nothing to commit, working directory clean $ git reset --hard HEAD^ HEAD is now at 9110ce6 added Warm Up $ git reset HEAD readme.txt $ git checkout -- readme.txt $ git status On branch master nothing to commit, working directory clean
18. 删除文件,rm (remove)
rm 准确一点儿的理解是移除,暂时看不见了,实际上还存在。可以选择直接在文件管理器中将其删除,但是那样的删除是将文件放到了回收站,等待你下一步操作(还原或彻底删除)。但是这里选择用 git 命令删除。
$ git rm test.txt
新建了一个用来操作 git 删除命令的测试文件 test.txt 。然后使用 git rm test.txt 将其删除。
从上图中可以看出,我主要操作了四步:
第一步:根据 git status 提示,我有一个文件需要添加进暂存区,于是我添加然后提交到了版本库里;
第二步:使用 rm test.txt 删除了工作区里的 test.txt 文件;
第三步:根据 git status 提示,我进行了一项删除操作 "deleted: test.txt",需要进一步选择操作命令,使用 git add/rm test.txt 命令去更新将要被提交的操作,或者使用 git checkout -- test.txt 去忽略工作区里的改变(第二步中的删除)。于是我选择了 git rm test.txt 彻底删除了工作区的 test.txt 文件(就好像在文件管理器里删除文件后,需要去回收站里彻底删除或还原文件一样,只是用 git 命令删除的文件放在了 git 仓库为我们准备的一个回收站里,我们看不见)。
第四步:使用 git commit -m "deleted test.txt" 将删除操作提交到仓库。
扩展:
有一种情况是删错了。所以需要恢复,或者说撤销删除。
我在 test.txt 文件同一路径下新建了 test-rm-checkout.txt 文件,用来测试撤销删除操作。
从上图中可以看出,在使用 rm test-rm-checkout.txt 命令删除文件后,我试图使用 cat test-rm-checkout.txt 命令进入被删除的文件看内容,被提示"没有这样的文件"。当我使用 git checkout -- test-rm-checkout.txt 撤销删除后,再次使用 cat test-rm-checkout.txt 命令进入被删除的文件看内容时,可以查看了,证明文件又回来了(只是里面没有内容,显示为空白而已)。