在Linux上安装Git
首先,输入命令git,看看系统有没有安装Git:
git --version
安装git命令
Debian或Ubuntu Linux 的可以用 sudo apt-get install git-core
CentOS 就可以使用yum命令来安装 yum -y install git
安装成功
git --version 就可以来看git的版本号
在Windows上安装Git
msysgit是Windows版的Git,从http://msysgit.github.io/下载,然后按默认选项安装即
可。
安装完成后,在开始菜单⾥里找到“Git”->“Git Bash”,蹦出⼀一个类似命令⾏行窗口的东西,就说明Git安装成功!
安装完成后,还需要最后⼀一步设置,在命令⾏行输⼊入:
$ git config --global user.name “Your Name”
$ git config --global user.email “email@example.com”
创建版本库
创建⼀个版本库非常简单,首先,选择⼀个合适的地方,创建一个空目录:
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
pwd命令⽤用于显示当前目录
如果你使⽤用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目
录)不包含中文。
第二步,通过git init命令把这个目录变成Git可以管理的仓库:
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
命令操作
第⼀步,⽤用命令 git add 告诉Git,把文件添加到仓库:
$ git add readme.txt
第二步,⽤用命令 git commit 告诉Git,把⽂文件提交到仓库:
$ git commit -m "wrote a readme file"
重复第一步 进行多次添加 再执行第二步也是可以的。
$ git status 查看仓库的状态
大致分为三种:
1.对文件进行修改并未执行添加操作 **$ git add **时
On branch master
Changes not staged for commit:
(use “git add …” to update what will be committed)
(use “git checkout – …” to discard changes in working
directory)
modified: readme.txt
no changes added to commit (use “git add” and/or "git commit
$ git diff xxx.txt
diff --git a/readme.txt b/readme.txt
index 46d49bf…9247db6 100644
— a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
Git is free software.
2.对文件已经进行修改,并且已经执行 git add xxx.txt 添加完成操作后,但未进行提交
$ git status
#On branch master
#Changes to be committed:
#(use “git reset HEAD …” to unstage)
#modified: readme.txt
git status 告诉我们,将要被提交的修改包括xxx.txt
3.执行提交完成操作
$ git commit -m "第一次提交"
#[master ea34578] add distributed
#1 file changed, 1 insertion(+), 1 deletion(-)
$ git status
#On branch master
nothing to commit (working directory clean)
Git 告诉我们当前没有需要提交的修改,而且工作目录干净的
版本回退
$ 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
从上到下 最近的一次提交到最远的一次。
$ git reset --hard HEAD^ 回退到上一个版本
HEAD is now at ea34578 add distributed
$ git reset --hard cb926e7ea50ad11b8f 回退到指定版本号的版本
HEAD is now at 3628164 append GPL
$ 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每次提交的日志
撤销修改
$ git checkout – xxx.txt
命令 git checkout – readme.txt 意思就是,把readme.txt文件在工作区的修改全部撤销,这
⾥里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一
样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存
区后的状态。
总之,就是让这个文件回到最近一次 git commit 或 git add 时的状态。
$ git reset HEAD xxx.txt
git reset 命令既可以回退版本,也可以把暂存区的修改回退到⼯工作区。当我们⽤用HEAD时,
表⽰示最新的版本。
删除文件
**$ git rm xxx.txt **
rm ‘test.txt’
$ git commit -m "remove test.txt"
[master d17efd8] remove test.txt
1 file changed, 1 deletion(-)
delete mode 100644 test.txt
现在,文件就从版本库中被删除了。
$ git checnkout – xxx.txt
git checkout 其实是⽤用版本库⾥里的版本替换⼯工作区的版本,⽆无论⼯工作区是修改还是删除,都
可以“⼀一键还原”。
远程仓库
第一种情况你在本地文件夹没有关于git的任何关联
$ git init就是初始化仓库,创建本地仓库。
$ git remote add origin git@github.com:michaelliao/learngit.git 让本地仓库与远程仓库产生关联
$ git pull 这样就可以让远程仓库与本地仓库保持一致
第二情况
在任意目录下克隆 $ git clone http://192.168.120.30/git_study_demo/git_learn.git
这样也可以让远程仓库与本地仓库保持一致
创建与合并分支并推送
$ git checkout -b dev 创建dev分支,并切换到dev分支,相当于下面
$ git branch dev 创建dev分支
$ git checkout dev 从当前切换到dev分支
$ git branch 查看该仓库的所有的分支
$ git merge dev 把分支的工作成果合并到master分支上
合并完成,就可以删除分支了
$ git branch -d dev 删除dev分支
$ git push origin fat 推送到远程仓库的fat分支上
拉取并指定分支
$ git clone http://192.168.120.30/git_study_demo/git_learn.git
$ git checkout -b dev origin/dev 切换到指定分支
推送指定分支
$ git push origin dev