初识Git
Git简介:
Git是分布式版本控制系统,对应的是集中式的版本控制如SVN。简单的说,分布式的版本控制就是每个人都可以创建一个独立的代码仓库用于管理,各种版本控制的操作都可以在本地完成。每个人修改的代码都可以推送合并到另外一个代码仓库中。而像SVN这样,只有一个中央控制,所有的开发人员都必须依赖于这个代码仓库。每次版本控制的操作也必须链接到服务器才能完成。
安装Git
基本操作:
- 创建版本库(repository)
1.选择一个合适的地方,创建一个空目录。
$ mkdir learngit $ cd learngit $ pwd /Users/michael/learngit
pwd命令用于显示当前路径。
2.通过git init命令把这个目录变成Git可以管理的仓库:
$ git init Initialized empty Git repository in /Users/michael/learngit/.git/
Git建立了一个空的仓库(empty Git repository)
当前目录下多了一个.git
的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
- 添加文件到Git仓库
第一步,使用命令git add <file>
,注意,可反复多次使用,添加多个文件;
第二步,使用命令git commit
,完成。
-
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 # no changes added to commit (use "git add" and/or "git commit -a")
上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。
-
版本回退
-
如果
git status
告诉你有文件被修改过,用git diff
可以查看修改内容。
-
HEAD
指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
。 -
穿梭前,用
git log
可以查看提交历史,以便确定要回退到哪个版本。
git log --pretty=online 简化git log的输出信息
$ git log commit 3628164fb26d48395383f8f31179f24e0882e1e0 Author: Michael Liao <askxuefeng@gmail.com> Date: Tue Aug 20 15:11:49 2013 +0800 append GPL commit ea34578d5496d7dd233c827ed32a8cd576c5ee85 Author: Michael Liao <askxuefeng@gmail.com> Date: Tue Aug 20 14:53:12 2013 +0800 add distributed commit cb926e7ea50ad11b8f9e909c05226233bf755030 Author: Michael Liao <askxuefeng@gmail.com> Date: Mon Aug 19 17:51:55 2013 +0800 wrote a readme file
一大串类似3628164...882e1e0
的是commit id
(版本号)
在Git中,用HEAD
表示当前版本,也就是最新的提交3628164...882e1e0
(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
。
$ git reset --hard HEAD^
HEAD is now at ea34578 add distributed
查看当前版本
$ cat readme.txt Git is a distributed version control system. Git is free software.
-
要重返未来,用
git reflog
查看命令历史,以便确定要回到未来的哪个版本。
Git提供了一个命令git reflog
用来记录你的每一次命令:
$ git reflog ea34578 HEAD@{0}: reset: moving to HEAD^ 3628164 HEAD@{1}: commit: append GPL ea34578 HEAD@{2}: commit: add distributed cb926e7 HEAD@{3}: commit (initial): wrote a readme file
-
添加远程库
(在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步)
- 登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库。
- 根据GitHub的提示,在本地仓库下运行命令
$ git remote add origin git@github.com:yourname/learngit.git
$ git push -u origin master
从现在起,只要本地作了提交,就可以通过命令:
$ git push origin master (上传本地当前分支代码到master分支)
$ git push (上传本地所有分支代码到远程对应的分支上)