Git学习笔记 第二章

文件相关操作

修改readme.txt文件,执行 git status 命令查看当前仓库状态

git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add ..." 更新要提交的内容)
(使用 "git checkout -- ..." 丢弃工作区的改动)

修改: redme.txt

未跟踪的文件:
(使用 "git add ..." 以包含要提交的内容)

redme.txt~

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

使用git diff查看修改了什么内容,即difference

jack@Aspire:~/git$ git diff
diff --git a/redme.txt b/redme.txt
index 394552f..4e50204 100644
--- a/redme.txt
+++ b/redme.txt
@@ -1 +1,2 @@
-This is my first Git test.
+This is my first Git file. //内容由test改为了file

然后执行

git add readme.txt

git comment -m "add something"

版本回退

*git log 命令查看历史记录
commit 2bf289cac7af933232575719f0a05548de2d92eb
Author: battleblock jackdirectcn@outlook.com
Date: Wed Sep 16 22:30:35 2015 +0800
git

commit aa458f20559aa148b72f28f61096d7efe54952d1
Author: battleblock jackdirectcn@outlook.com
Date: Mon Sep 14 21:18:58 2015 +0800
test

commit 7b68b6f797a38b7fe2af70307e22a6008dfdf7a5
Author: battleblock jackdirectcn@outlook.com
Date: Mon Sep 14 20:38:35 2015 +0800

*git log --pretty=oneline显示较少信息(commin id版本号)
jack@Aspire:~/git$ git log --pretty=oneline
2bf289cac7af933232575719f0a05548de2d92eb git
aa458f20559aa148b72f28f61096d7efe54952d1 test
7b68b6f797a38b7fe2af70307e22a6008dfdf7a5 write a readme file

回退HEAD 表示当前版本,上一个版本为HEAD^ 上100个版本为HEAD~100
git reset --hard HEAD^回退到上一个版本

jack@Aspire:~/git$ git reset --hard HEAD^
HEAD 现在位于 aa458f2 test
cat readme命令查看内容

返回到现在版本

git reset --hard 版本号
jack@Aspire:~/git$ git reset --hard 2bf289
HEAD 现在位于 2bf289c git

git reflog查看每一次命令

小结

*HEARD指向当前版本,Git可以在历史版本间来回穿梭,命令为git reset --hard commit id
*穿梭前用git log查看提交历史,确定回退到哪个版本
*重返未来,用git reflog查看命令历史

撤销修改

修改了文件,但还未用git add命令提交,可用git checkout -- readme.txt
*readme.txt自修改后还没有被放到暂存区,撤销修改就回到原来的状态;
*readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态

修改了文件并用git add提交到到暂存区
可用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区

git add readme.txt
git reset HEAD readme.txt
重置后撤出暂存区的变更:
M readme.txt
D redme.txt

小结

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库

删除文件

添加一个新文件test.txt到Git并且提交
git add test.txt
git commit -m "add test.txt"
在维恩件管理器中删除该文件或用rm 命令删除
此时用git status命令查看当前状态

1.从版本库中删除该文件
git rm test.txt
rm 'test.txt'
$ git commit -m "remove test.txt"
rm test.txt
2.恢复误删文件
git checkout -- test.txt