MYF

Git基本使用

一年多前学过Git,但是一直没有应用,今天拿出来复习一下

创建仓库

1
git init

文件控制

add

add:将修改内容或者新文件添加到本地缓存区

1
2
3
4
5
git add file.txt // 添加file.txt文件
git add -A // 添加所有改动
git add * // 添加新建文件和修改,但是不包括删除
git add . // 添加新建文件和修改,但是不包括删除
git add -u // 添加修改和删除,但是不包括新建文件

在 commit 前撤销 add:

1
2
git reset <file> // 撤销提交单独文件
git reset // unstage all due chan

commit

git commit:将本地缓冲区的内容提交到本地仓库

1
git commit -m "修改说明"

status

git status用于查看从上次commit之后到现在所有发生修改的文件

git add readme.txt之前

1
2
3
4
5
6
7
8
9
$ 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 add readme.txt之后,git commit之前

1
2
3
4
5
6
7
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: readme.txt
#

git commit之后

1
2
3
$ git status
# On branch master
nothing to commit (working directory clean)

diff

用于对比一个文件从上次add到现在的修改

1
2
3
4
5
6
7
8
9
$ git diff readme.txt 
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
Git is free software.
1
2
3
git diff HEAD -- readme.txt # 查看工作区和版本库里面最新版本的区别,等价于git diff readme.txt
git diff HEAD^ -- readme.txt # 查看工作区和版本库里面HEAD^的区别
git diff 874ad310 -- readme.txt # 查看工作区和版本库里面874ad310的区别

rm

git rmgit add同级,相当于把文件修改记录到了暂存区

1
2
3
4
5
6
7
# 1. 从远程库删除该文件
git rm test.txt # 会在工作区自动执行rm test.txt
git commit -m "remove test.txt"

# 2. 在本地误删文件,恢复
rm test.txt
git checkout -- test.txt

版本控制

log

查看commit记录

1
2
git log 
git log --pretty=oneline

reset

版本回退

1
2
3
4
5
6
git reset --hard HEAD   #退回当前版本,即上次commit后的状态
git reset --hard HEAD^ #退回上一个版本,即上上次commit后的状态
git reset --hard HEAD^^ #退回上上一个版本,即上上上次commit后的状态
git reset --hard HEAD~2 #退回上上一个版本,即往上2个版本commit后的状态

git reset --hard 874ad310 #退回commit id以874ad310开头的版本

清除暂存区中的文件修改

工作区中修改之后执行git add readme.txt,会将修改提交到暂存区,同时工作区仍然有该文件(存疑,我个人觉得没有),当执行下述指令的时候,会将暂存区的readme.txt清空(存疑,我个人觉得是将暂存区的文件退回了工作区)

1
git reset HEAD readme.txt

reflog

查看所有版本号(包括已经回退过的)

1
git reflog

撤销修改

让这个文件回到最近一次git commit或git add时的状态。

1
$ git checkout -- readme.txt