Git学习记录<2>
继续学习记录1
记录修改(log&diff):
(1)、修改1.py的内容:加入a=2;
(2)、查看状态: $git status
(3)、先加入:$ git add 1.py
注:add .表示add所有文件
(4)、提交:$ git commit -m "change 1"
(5)、再次查看状态(可以看到修改过的记录):$ git status-s
注:以缩写的形式查看状态
查看unstages:
(1)、查看这次还没add
(unstaged) 的修改部分和上个已经 commit
的文件有何不同
$ git diff
:
查看stages:
(1)、如果已经add
这次修改, 文件变成了 “可提交状态” (staged), 可以在diff
中添加参数--cached
来查看修改
$ git add . # add 全部修改文件
$ git diff --cached
查看unstages和stages状态:
(1)、再修改一下1.py
但不 add
$ git diff HEAD
修改已 commit 的版本
(1)、如果已经提交了commit
却发现在这个commit
中忘了附上另一个文件.
Eg: 最后一个commit
是change 2
, 我要添加另外一个文件, 将这个修改也 commit
进change 2
. 可以复制1.py
, 改名为2.py
. 并把2.py
变成staged
, 然后使用--amend
将这次改变合并到之前的 change 2
中.
$ git add 2.py
$ git commit --amend --no-edit # "--no-edit": 不编辑, 直接合并到上一个 commit
$ git log --oneline # "--oneline": 每个 commit 内容显示在一行
reset 回到add之前
(1)、有时我们添加add
了修改, 又想补充一些内容再 add
.
$ git add 1.py
$ git status -s
$ git reset 1.py
$ git status -s
reset回到commit之前
(1)、每个commit都有自己的id
数字号, HEAD
是一个指针, 指引当前的状态是在哪个commit
.
# 不管我们之前有没有做了一些add工作,这一步让我们回到上一次的commit
$ git reset --hard HEAD
# 看看所有的log
$ git log --oneline
# 回到 c10ea64 change 1
# 方式1: "HEAD^"
$ git reset --hard HEAD^
注释:HEAD~n(n表示惠到底几个head)
# 方式2: "commit id"
$ git reset --hard c6762a1
# 看看现在的 log
$ git log --oneline
(2)、查看$ git reflog
里面最近做的所有 HEAD
的改动, 并选择想要挽救的 commit id
:
$ git reflog
# 输出
c6762a1 HEAD@{0}: reset: moving to c6762a1
904e1ba HEAD@{1}: commit (amend): change 2
0107760 HEAD@{2}: commit: change 2
c6762a1 HEAD@{3}: commit: change 1
13be9a7 HEAD@{4}: commit (initial): create 1.py
(3)、重复reset
步骤就能回到 commit (amend): change 2
(id=904e1ba)这一步:
$ git reset --hard 904e1ba
$ git log --oneline
# 输出
904e1ba change 2
c6762a1 change 1
13be9a7 create 1.py
回到从前(checkout针对单个文件):
(1)、reset是针对这个版本库,针对单个文件使用checkout;
Eg:比如我们仅仅对1.py进行回到过去操作,回到id change 1这个commit,
$ git log --oneline
# 输出
904e1ba change 2
c6762a1 change 1
13be9a7 create 1.py
---------------------
$ git checkout c6762a1 -- 1.py
修改完之后:
$ git add 1.py
$ git commit -m "back to change 1 and add comment for 1.py"
$ git log --oneline
# 输出
47f167e back to change 1 and add comment for 1.py
904e1ba change 2
c6762a1 change 1
13be9a7 create 1.py