Git学习之基础<1>

来源:互联网 发布:如何使用淘宝积分 编辑:程序博客网 时间:2024/06/06 04:23
  • 集中式版本控制系统:版本库是集中存放在中央服务器的;必须联网才能工作;
  • 分布式版本控制系统:根本没有”中央服务器”;每个人的电脑上都是一个完整的版本库;

创建版本库:

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

所有的版本控制系统,其实只能跟踪文本文件的改动,⽐比如TXT文 件,⺴⽹网⻚页,所有的程序代码等等,Git也不例外。Microsoft的Word格式是二进制格式,因此,版本控制系统是没法跟踪Word文 件的改动的。

把⼀一个⽂文件放到Git仓库只需要两步。

1.第一步,用命令git add告诉Git,把文件添加到仓库:

$ git add readMe.txt
  1. 第二步,用命令git commit告诉Git,把文件提交到仓库:
$ git commit -m "wrote a readme file"[master (root-commit) cb926e7] wrote a readme file 1 file changed, 2 insertions(+) create mode 100644 readme.txt

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

版本回退:

执行 git commit命令相当于提交一个新的版本;git log命令以查看历史记录:

$ git logcommit 3628164fb26d48395383f8f31179f24e0882e1e0Author: Michael Liao <askxuefeng@gmail.com>Date:   Tue Aug 20 15:11:49 2013 +0800append GPLcommit ea34578d5496d7dd233c827ed32a8cd576c5ee85Author: Michael Liao <askxuefeng@gmail.com>Date:   Tue Aug 20 14:53:12 2013 +0800commit cb926e7ea50ad11b8f9e909c05226233bf755030Author: Michael Liao <askxuefeng@gmail.com>Date:   Mon Aug 19 17:51:55 2013 +0800    wrote a readme file

git log命令显⽰从最近到最远的提交日志,我们可以看到3次提交,最近的一次 是“append GPL”,上一次是“add distributed”,最早的一次是“wrote a readme file”。 如果嫌输出信息太多,看得眼花缭乱的,可以试试加上 --pretty=oneline参数:

$ git log --pretty=oneline3628164fb26d48395383f8f31179f24e0882e1e0 append GPLea34578d5496d7dd233c827ed32a8cd576c5ee85 add distributedcb926e7ea50ad11b8f9e909c05226233bf755030 wrote a readme file

首先,Git必须知道当前版本是哪个版本,在Git中,⽤用HEAD表⽰示当前版本,上一个版本就是 HEAD^,上上⼀一个版本就是HEAD^^,当然往上100 个版本写100个^⽐比较容易数不过来, 所以写成HEAD~100。

回退版本使用git reset命令,例如回退到上一个版本:

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

从新版本回退到旧版本,如果再想从旧版本回退到新版本怎么办呢?只要找到想要恢复的版本的commit id就好了。

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

版本号没必要写全,前几位就可以了,Git会⾃自动去找。当然也不能只写前⼀一两位,因为Git 可能会找到多个版本号,就⽆无法确定是哪⼀一个了。

现在,你回退到了某个版本,关掉了电脑,第⼆二天早上就后悔了,想恢复到新版本怎么办? 找不到新版本的commit id怎么办?Git提供了一个命令git reflog⽤用来记录你的每一次命令:

$ git reflogea34578 HEAD@{0}: reset: moving to HEAD^3628164 HEAD@{1}: commit: append GPLea34578 HEAD@{2}: commit: add distributedcb926e7 HEAD@{3}: commit (initial): wrote a readme file

注意:

  • HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使⽤用命 令git reset –hard commit_id。
  • 穿梭前,⽤用git log可以查看提交历史,以便确定要回退到哪个版本。
  • 要重返未来,⽤用git reflog查看命令历史,以便确定要回到未来的哪个版本。
0 0