上节回顾
- 初始化一个Git仓库用 git init 命令。
- 将文件添加到Git仓库中主要有两个步骤:
第一步,使用命令 git add <file>;
注意:使用 git add . 命令可以将全部文件同时添加到Git仓库缓存区。
第二步,使用命令 git commit -m "message" 将Git仓库缓存区文件存放到Git仓库。
这样,就完成了将文件存放到Git仓库的基本流程。
============我===是===分===割===线=============
查看工作区状态
我们已经成功地添加并提交了一个sayHello.py文件,现在,是时候继续工作了,于是,我们继续修改sayHello.py文件,改成如下内容:
1 def sayHello(name): 2 print("Hi,", name) 3 print("Nice to meet you!")
现在运行 git status 查看运行结果:
1 $ git status 2 On branch master 3 Changes not staged for commit: 4 (use "git add <file>..." to update what will be committed) 5 (use "git checkout -- <file>..." to discard changes in working directory) 6 7 modified: sayHello.py 8 9 no changes added to commit (use "git add" and/or "git commit -a")
git status
命令可以让我们时刻掌握仓库当前的状态。上面的命令输出告诉我们,sayHello.py被修改过了,但还没有准备提交的修改。虽然Git告诉我们readme.txt
被修改了,但不能看出具体修改了什么内容。需要用 git diff
这个命令查看:
1 $ git diff 2 warning: LF will be replaced by CRLF in sayHello.py. 3 The file will have its original line endings in your working directory. 4 diff --git a/sayHello.py b/sayHello.py 5 index 99ad2c8..48bc87f 100644 6 --- a/sayHello.py 7 +++ b/sayHello.py 8 @@ -1,4 +1,4 @@ 9 10 def sayHello(name): 11 print("Hi,", name) 12 - 13 + print("Nice to meet you!")
git diff
顾名思义就是查看difference,显示的格式正是Unix通用的diff格式。
版本回退
通过不断地对文件进行修改并提交到Git版本库中,当在实际工作中,不可能会记得对每个版本做了哪些修改。在Git中,可以通过 git log 命令查看:
1 $ git log 2 commit fd7c94c4d321fbd4805f229ccf60f3a003e606f4 (HEAD -> master) 3 Author: zhangchao <[email protected]> 4 Date: Sun Sep 2 10:18:10 2018 +0800 5 6 add a code in sayHello.py file 7 8 commit 8649dabd56f716bf2cc4e92fad5505eecd756830 9 Author: zhangchao <[email protected]> 10 Date: Sun Sep 2 10:10:05 2018 +0800 11 12 creat sayHello.py file
可以发现,总共有两次提交日志。如果嫌输出的信息太多,可以加上 --pretty=oneline 参数:
1 $ git log --pretty=oneline 2 fd7c94c4d321fbd4805f229ccf60f3a003e606f4 (HEAD -> master) add a code in sayHello.py file 3 8649dabd56f716bf2cc4e92fad5505eecd756830 creat sayHello.py file
到此,我们知道了我们一共提交了多少个版本了。我们准备将 sayHello.py 文件回退到上一个版本中。具体的操作步骤如下:
第一步:Git必须知道当前版本是哪个版本,在Git中,用 HEAD 表示当前版本,也就是最新的提交 fd7c94...,上一个版本就是 HEAD^
,上上一个版本就是 HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
。
第二步:把当前版本 add a code in sayHello.py file 回退到上一个版本 creat sayHello.py file ,就可以使用git reset
命令:
1 $ git reset --hard HEAD^ 2 HEAD is now at 8649dab creat sayHello.py file
我们再查看sayHello.py文件:
1 $ cat sayHello.py 2 3 def sayHello(name): 4 print("Hi,", name)
可见,我们当前版本以及回到了最开始创建sayHello.py文件了。
如果你回退后悔了,想再次回到回退前的一个版本,只要上面的窗口没有关闭,只要找到相应版本的 commit id ,于是就可以回到指定的某个版本:
1 $ git reset --hard fd7c94c 2 HEAD is now at fd7c94c add a code in sayHello.py file
这样,版本就回到了 fd7c94c 版本了。
如果,之前的窗口不小心关了,找不到之前版本的 commit id 了。这时,可以通过 git reflog 命令查看所有的版本号:
1 $ git reflog 2 fd7c94c (HEAD -> master) [email protected]{0}: reset: moving to fd7c94c 3 8649dab [email protected]{1}: reset: moving to HEAD^ 4 fd7c94c (HEAD -> master) [email protected]{2}: reset: moving to HEAD 5 fd7c94c (HEAD -> master) [email protected]{3}: commit: add a code in sayHello.py file 6 8649dab [email protected]{4}: commit (initial): creat sayHello.py file
撤销修改与删除文件
撤销修改:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令:
git checkout --<file>
。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,
第一步:用命令git reset HEAD <file>
,就回到了场景1,
第二步:按场景1操作。
删除文件:
命令 git rm
用于删除一个文件。如果一个文件已经被提交到版本库,那么就可以永远不用担心误删,但是要小心,只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
原文地址:https://www.cnblogs.com/zhangchao162/p/9571769.html