Git的基本使用

Git的基本使用

git init

把当前目录变成Git可以管理的仓库:

$ git init
Initialized empty Git repository in C:\Users\ydt\Desktop\练习\git-test\test

git status

可以查看当前状态

$ git status
On branch master
nothing to commit, working tree clean

当前工作区是干净的

假设在当前目录创建了新建文本文档.txt,git status查看状态

$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

        "\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243 (2).txt"

nothing added to commit but untracked files present (use "git add" to track)

新增了文件,并且未add和commit(修改监控包括了文件内的修改,当前目录的文件增删、重命名等)

git diff

git status可以告诉我们什么文件被修改过,而如果想知道具体的修改,可以用git diff

$ git diff 新建文本文档.txt
diff --git "a/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt" "b/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt"
index d800886..31ed750 100644
--- "a/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt"
+++ "b/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt"
@@ -1 +1 @@
-123
\ No newline at end of file
+1231231
\ No newline at end of file

git add

将文件添加进仓库暂存区

$ git add .        添加所有的文件、文件夹
$ git add <file>   添加指定名称的文件,<>内部写文件全称
$ git add 新建文本文档.txt

没有任何显示,说明添加成功

git status查看状态

$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

        new file:   "\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt"

新建文本文档.txt已经在暂存区。

git commit

将暂存区的修改全部提交到分支,-m为提交的说明信息

$ git commit -m"第一次提交"
[master (root-commit) ad7f5fe] 第一次提交
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 "\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt"

提交成功

git status再次查看状态

$ git status
On branch master
nothing to commit, working tree clean

工作区是干净的

版本库&工作区&暂存区

image
工作区:就是在电脑里能看到的目录

暂存区:用git add把文件添加进去,还未进行commit的区域,就是暂存区;

版本库: 工作区有一个隐藏目录.git,就是Git的版本库。

git log

显示从最近到最远的提交日志

$ git log
commit 64fcede692e5db64cbee83d1965a2c15ddaa24e3 (HEAD -> master)
Author: ydt <468602953@qq.com>
Date:   Fri Aug 17 14:24:30 2018 +0800

    xxx

commit ad7f5fe1afbb208e8596b925c4a6198cbe72c5b0
Author: ydt <468602953@qq.com>
Date:   Fri Aug 17 14:15:57 2018 +0800

    第一次提交

可以加上--pretty-oneline,输出简略信息

$ git log --pretty=oneline
64fcede692e5db64cbee83d1965a2c15ddaa24e3 (HEAD -> master) xxx
ad7f5fe1afbb208e8596b925c4a6198cbe72c5b0 第一次提交

上面的HEAD表示当前版本。那么HEAD^就是上一个版本,那么HEAD^^就是上上个版本,如果版本数较多,可以用HEAD~100,表示上100个版本。

git reset

回退到指定版本

$ git reset --hard HEAD^
HEAD is now at ad7f5fe 第一次提交

查看提交记录

$ git log
commit ad7f5fe1afbb208e8596b925c4a6198cbe72c5b0 (HEAD -> master)
Author: ydt <468602953@qq.com>
Date:   Fri Aug 17 14:15:57 2018 +0800

    第一次提交

成功回退到上个版本

回退后可以发现,之前的版本已经不存在,如果窗口没有关闭,可以向上查找之前的log信息,找到之前版本的版本号(取前几位就行)

$ git reset --hard 64fc
HEAD is now at 64fcede xxx

可以看到,成功回到最新的提交 xxx。

git reflog

用来记录你的每一次命令

假如窗口关闭,找不到新版本的commit id,就可以用git reflog来查找

$ git reflog
ad7f5fe (HEAD -> master) HEAD@{0}: reset: moving to HEAD^
64fcede HEAD@{1}: reset: moving to 64fc
ad7f5fe (HEAD -> master) HEAD@{2}: reset: moving to HEAD^
64fcede HEAD@{3}: commit: xxx
ad7f5fe (HEAD -> master) HEAD@{4}: commit (initial): 第一次提交

同样,顺利的找到了最新版本 xxx

git checkout -- file

丢弃工作区的修改

这里有两种情况

  • 一种是file自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

  • 一种是file已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

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

git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。

git reset HEAD

可以把暂存区的修改撤销掉,重新放回工作区。

这里我们将txt随便做点修改,然后add进暂存区,查看状态:

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   "\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt"

接下来执行撤销:

$ git reset HEAD 新建文本文档.txt
Unstaged changes after reset:
M       新建文本文档.txt

查看状态:

$ 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:   "\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt"

no changes added to commit (use "git add" and/or "git commit -a")

可以看到,现在暂存区是干净的,工作区有修改

根据需要,还可以进一步删除工作区的修改:

$ git checkout -- 新建文本文档.txt

至于撤销commit,就该用到版本回退 git reset --hard了。

posted @ 2018-10-06 21:14  parallel_y  阅读(346)  评论(0编辑  收藏  举报