廖雪峰的Git教程笔记(持续更新)

目录

 

1.Git简介

集中式和分布式版本控制系统有什么区别呢?

安装Git

创建版本库

把文件添加到版本库当中

2.时光机穿梭

版本回退

工作区和暂存区


1.Git简介

 

Git是目前世界上最先进的分布式版本控制系统。

CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统。

集中式和分布式版本控制系统有什么区别呢?

集中式版本控制系统,版本库是集中存放在中央服务器的。集中式版本控制系统最大的毛病就是必须联网才能工作。

分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库。

安装Git

直接下载安装包,默认安装即可。

安装完成之后设置用户名和密码:

$ git config --global user.name "H-PAI"
$ git config --global user.email "[email protected]"

创建版本库

版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

1.选择一个合适的地方(直接选择D盘或者E盘的根目录)

2.命令mkdir创建一个空目录(创建只后 系统会直接在之前选择的目录里创建该目录)

3.命令git init对空目录进行初始化操作,完成仓库的创建

$ mkdir learnGit
$ cd learnGit/
$ git init
Initialized empty Git repository in D:/learnGit/.git/

把文件添加到版本库当中

1.新建一个文件readme.txt,并把文件放在learnGit文件夹下面

2.命令git add告诉Git把文件添加到仓库,注意,可反复多次使用,添加多个文件。(执行完之后没有任何显示)

3.命令git commit告诉Git把文件提交到仓库。(-m 后面输入的是本次提交的说明,可以输入任意内容)

$ git add readme.txt
$ git commit -m "wrote a readme file"
[master (root-commit) 091ecf2] wrote a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt

2.时光机穿梭

命令git status可以时刻掌握仓库当前的状态。

$ 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

命令git diff可以查看当前版本与之前做了哪些修改。

$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index b6dec33..71747a4 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,3 +1,4 @@
 Git is a version control system.
 Git is free software.
-Git is a distributed version control system.
\ No newline at end of file
+Git is a distributed version control system.
+add one line.
\ No newline at end of file

 命令git log显示从最近到最远的提交日志。

$ git log
commit 4354f6fa81b6746750cf6c23f28a21d0b1674f36 (HEAD -> master)
Author: H-PAI <[email protected]>
Date:   Tue Jul 31 09:00:52 2018 +0800

    append GPL

commit 1f569826b0b6a9d4db4d2b5eb790d7c443263d63
Author: H-PAI <[email protected]>
Date:   Tue Jul 31 08:39:26 2018 +0800

    add a line

commit 5ad156c71765be92d24903dd8820f4dbca8c16e9
Author: H-PAI <[email protected]>
Date:   Tue Jul 31 08:33:41 2018 +0800

    change readme.txt

commit 091ecf2b609e72b82d50dc488ded1ff4be4b0b32
Author: H-PAI <[email protected]>
Date:   Mon Jul 30 20:36:07 2018 +0800

    wrote a readme file

如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数。

$ git log --pretty=oneline
4354f6fa81b6746750cf6c23f28a21d0b1674f36 (HEAD -> master) append GPL
1f569826b0b6a9d4db4d2b5eb790d7c443263d63 add a line
5ad156c71765be92d24903dd8820f4dbca8c16e9 change readme.txt
091ecf2b609e72b82d50dc488ded1ff4be4b0b32 wrote a readme file

版本回退

Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交4354f6f...,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。(版本号没必要写全,前几位就可以了,Git会自动去找。

$ git reset --hard HEAD^
HEAD is now at 1f56982 add a line

$ cat readme.txt
Git is a version control system.
Git is free software.
Git is a distributed version control system.
add one line.


$ git reset --hard 4354f6
HEAD is now at 4354f6f append GPL

$ cat readme.txt
Git is a version control system.
Git is free software distributed under the GPL.

命令git reflog用来记录你的每一次命令。

$ git reflog
4354f6f (HEAD -> master) HEAD@{0}: reset: moving to 4354f6
1f56982 HEAD@{1}: reset: moving to HEAD^
4354f6f (HEAD -> master) HEAD@{2}: commit: append GPL
1f56982 HEAD@{3}: commit: add a line
5ad156c HEAD@{4}: commit: change readme.txt
091ecf2 HEAD@{5}: commit (initial): wrote a readme file

工作区和暂存区

工作区(Working Directory):就是你在电脑里能看到的目录。

版本库(Repository):工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。一旦提交后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的。

猜你喜欢

转载自blog.csdn.net/Han_DV/article/details/81288387