[关闭]
@tata 2014-10-14T14:12:02.000000Z 字数 2541 阅读 1698

Git教程总结

Git

引用:廖雪峰的官方网站:Git教程


在Windows上安装Git在此输入正文

msysgit是Windows版的Git,从http://msysgit.github.io/下载,然后按默认选项安装即可。

安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!

安装完成后,还需要最后一步设置,在命令行输入:

  1. $ git config --global user.name "Your Name"
  2. $ git config --global user.email "email@example.com"

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。你也许会担心,如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的。

注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

创建版本库

初始化一个Git仓库,使用git init命令。

  1. $ git init
  2. Initialized empty Git repository in /Users/michael/learngit/.git/

添加文件到Git仓库,分两步:

第一步,使用命令git add ,注意,可反复多次使用,添加多个文件;

  1. $ git add readme.txt

执行上面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。

第二步,使用命令git commit,完成。

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

时光机穿梭

要随时掌握工作区的状态,使用git status命令。

  1. $ git status
  2. # On branch master
  3. # Changes not staged for commit:
  4. # (use "git add <file>..." to update what will be committed)
  5. # (use "git checkout -- <file>..." to discard changes in working directory)
  6. #
  7. # modified: readme.txt
  8. #
  9. no changes added to commit (use "git add" and/or "git commit -a")

如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

  1. $ git diff readme.txt
  2. diff --git a/readme.txt b/readme.txt
  3. index 46d49bf..9247db6 100644
  4. --- a/readme.txt
  5. +++ b/readme.txt
  6. @@ -1,2 +1,2 @@
  7. -Git is a version control system.
  8. +Git is a distributed version control system.
  9. Git is free software.

版本回退

HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。

现在,我们要把当前版本回退到上一个版,就可以使用git reset命令:

  1. $ git reset --hard HEAD^
  2. HEAD is now at ea34578 add distributed

可以有多个^,比如HEAD^^^,HEAD~100
还可以指定commit的ID,比如:

  1. $ git reset --hard 3628164
  2. HEAD is now at 3628164 append GPL

穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

工作区和暂存区

版本库(Repository):工作区有一个隐藏目录“.git”,这个不算工作区,而是Git的版本库。

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
工作区和暂存区的关系

前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用“git add”把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用“git commit”提交更改,实际上就是把暂存区的所有内容提交到当前分支。

撤销修改

  1. $ git checkout -- readme.txt

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

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

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

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

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

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

Git同样告诉我们,用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区。

git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

删除文件

  1. $ rm test.txt
  2. $ git rm test.txt
  3. rm 'test.txt'
  4. $ git commit -m "remove test.txt"
  5. [master d17efd8] remove test.txt
  6. 1 file changed, 1 deletion(-)
  7. delete mode 100644 test.txt
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注