Git的基本命令使用
Evernote Export
一、完成安装配置
1.3安装完成进行配置:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
因为Git是分布式版本控制系统,每个机器都需要一个标识,也就是:你的名字和Email地址。
输入账号密码 在创建空目录learngit
二,创建版本库
2.1创建资源库所在的目录,命令:
$ mkdir learngit 创建learngit库$ cd learngit 进入learngit仓库
$ pwd 进入learngit仓库
/Users/michael/learngit第二次进入版本库的命令
2.2通过git init命令把这个目录编程GIt可以管理的仓库:
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
2.3添加文件到资源库
第一步:我们新建一个文本文件到我们的资源库learngit目录下。注意不要用记事本来编辑(会出错)用sublime text
第二步:试用git add命令告诉GIt,把文件添加到资源库
$ git add test.txt
执行命令后,没有提示信息。 这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。
第三步:用命令git commit告诉Git,把文件提交到仓库:
$ git commit -m "wrote a test file"
说明:执行上述命令会打印提示信息如:
[master (root-commit) 3b15333] wrote a test file
1 file changed, 1 insertion(+)
create mode 100644 test.txt

git commit命令:-m后面输入的是本次提交的说明,可以输入任意有意义的内容,这样方便从历史记录中找到改动记录。
此外,我们可以同时添加很多文件,一起提交,例如:
$ git add file1.txt
$ git add file2.txt
$ git add file3.txt
$ git commit -m "add 3 files."
三,版本回退
3.1修改文件
原始文件中的内容为:this is my first time to use Notepad++;
在原始文件中添加新的内容为:Add a new line。
3.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 d
modified: test.txt
no changes added to commit (use "git add" and/or "git commit -a")

执行git status命令,会打印提示消息。上述提示消息中告诉我们文件被修改,并没有提交。
3.3使用git diff命令查看详细修改内容;
$ git diff diff --git a/test.txt b/test.txt index d829b41..d6e3bba 100644 --- a/test.txt +++ b/test.txt @@ -1 +1,2 @@ -this is my first time to use Notepad \ No newline at end of file +this is my first time to use Notepad +Add a new line。 \ No newline at end of file
3.4使用git add test.txt 命令和git commit -m “add a new line.”提交修改;然后在文本中新添加内容“add a new line again”,

以上述命令重新执行一边。

3.5使用git log查看修改记录。
$ git log
commit 4e8b0d0aaa685a83fb96fe52997e5af1e9e541ce
Author: bill <huangyabin001@163.com>
Date: Sat Jun 28 13:48:29 2014 +0800
add a new line again
commit d4d025a1cffaa761a7b82f39551465f7610a82db
Author: bill <huangyabin001@163.com>
Date: Sat Jun 28 13:47:43 2014 +0800
add a new line
commit 3b15333fdbb147f183a9d3013eadfafc9b05b127
Author: bill <huangyabin001@163.com>
Date: Sat Jun 28 13:18:15 2014 +0800
wrote a test file
commit 4e8b0d0aaa685a83fb96fe52997e5af1e9e541ce
Author: bill <huangyabin001@163.com>
Date: Sat Jun 28 13:48:29 2014 +0800
add a new line again
commit d4d025a1cffaa761a7b82f39551465f7610a82db
Author: bill <huangyabin001@163.com>
Date: Sat Jun 28 13:47:43 2014 +0800
add a new line
commit 3b15333fdbb147f183a9d3013eadfafc9b05b127
Author: bill <huangyabin001@163.com>
Date: Sat Jun 28 13:18:15 2014 +0800
wrote a test file
上述命令git log执行后会打印出具体日志信息。从上述信息中我们可以得到每次提交的记录,记录中包含提交的描述性信息例如“wrote a test file”,提交时间,提交人的具体信息等。而“commit 3b15333fdbb147f183a9d3013eadfafc9b05b127”则是我们每次提交的提交版本号,也称之提交的记录ID。
如果我们不需要提交人,提交时间等信息,我们也可以以一种更简洁的方式查看日志,只需要加上“--pretty=online”参数即可。
$ git log --pretty=oneline 4e8b0d0aaa685a83fb96fe52997e5af1e9e541ce add a new line again d4d025a1cffaa761a7b82f39551465f7610a82db add a new line 3b15333fdbb147f183a9d3013eadfafc9b05b127 wrote a test file
3.6使用git reset命令回退版本
在工作当中,我们不可避免的使用回退版本,例如一个模块负责人提交了一部分代码,在项目负责人发编译发布版本前离开了工作岗位,项目负责人在编译发布版本的时候发现模块负责人工作失误造成项目无法编译通过,为了不耽误整个版本发布的工作,负责人不得不回退版本。
$ git reset --hard HEAD^
HEAD is now at d4d025a add a new line
HEAD is now at d4d025a add a new line

版本退回到 只有2行的。
上述命令中Head在Git中的概念是一个指向你正在工作中的本地分支的指针(可以把HEAD想象为当前分支的别名),其所对应的分支本质是个指向commit对象的可变指针。截止到目前的学习中,在我们若干差提交后,我们已经有了一个指向最后一次提交的master分支,它在每次提交的时候都会自动向前移动。
我们使用git log --pretty=oneline查看:
$ git log --pretty=oneline d4d025a1cffaa761a7b82f39551465f7610a82db add a new line 3b15333fdbb147f183a9d3013eadfafc9b05b127 wrote a test file
这个时候我们发现记录中已经少了一条,并且打开文件也会发现,最后修改的内容已经不见了。

还拿上面的例子来说,如果项目管理员发现编译不能通过的原因不是模块负责人的误操作引起的,而是有其他原因引起的,并且当前需要发布的版本中需要模块负责人的改动,但是版本已经回退了,能否再回退到回退前的版本呢?
答案是肯定的,我们只需要知道我们需要回退到的那个版本号commit id即可(例如当前的命令窗口没有关闭,我们可以轻轻滑动滚轴就可以看到之前的版本号),或者知道前面一部分也可以。
$ git reset --hard 4e8b0d0 HEAD is now at 4e8b0d0 add a new line again

读者可以使用git log进行查看,是否已经回退成功。
但是如果当前的命令窗口已经关闭了,我们无法在命令窗口中查看我们之前打印的版本号了怎么办?git也为我们提供了一个命令来记录我们每次执行的命令“git reflog”
$ git reflog
4e8b0d0 HEAD@{0}: reset: moving to 4e8b0d0
d4d025a HEAD@{1}: reset: moving to HEAD^
4e8b0d0 HEAD@{2}: commit: add a new line again
d4d025a HEAD@{3}: commit: add a new line
3b15333 HEAD@{4}: commit (initial): wrote a test file

上述提示信息中最前面的字符串即是我们需要的版本号。
总结:我们在电脑中能够看到的目录,例如我们新疆an的文件夹learngit文件夹就是一个工作区,而隐藏目录.git是git的版本库,在这个版本中的index文件(stage)是一个很重要的文件,我们称之为暂存区,git为我们自动创建的第一个分之master,以及指向master的一个指针称作HEAD。我们之前添加文件的操作“git add”,实际上是把文件修改添加到暂存区。而提交操作“git commit”则是把暂存区的所有内容提交到当前分支。 因此我们如果要提交修改,在提交前我们应该执行git add命令,把修改的文件添加到暂存区。
四,撤销修改 git checkout
我们不能绝对的保证在日常的工作中不会出任何差错,如果我们在提交代码前发前发现有错误,但是我们没有执行了git add命令把修改的文件添加到了暂存区,那么能否撤销此次修改呢?
答案也是肯定的。

$ git checkout -- test.txt
执行上述命令,没有任何提示消息。
而且我们也可以使用命令git reset HEAD file把暂存区的修改撤掉(unstage),重新放回工作区。
git reset HEAD test.txt
五,删除文件
首先我们新键一个文件,并去删除它
如果我们没用把它提交到版本库我们可以在文件管理器手动删除或者使用命令"rm 文件名"的方式进行删除,而如果我们要删除版本库中的文件我们可以使用"git rm 文件名"的方式来操作。
$ git rm test1.txt rm 'test1.txt'

浙公网安备 33010602011771号