一. 在Windows上安装Git
msysgit是Windows版的Git,从http://msysgit.github.io/下载,然后按默认选项安装即可。
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东东。
安装完成后,还需要最后一步设置,在命令行输入:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。
注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
二、 在Linux上安装Git
1、下载和安装GIT
如果你碰巧用Debian或Ubuntu Linux,通过一条“sudo apt-get install git”就可以直接完成Git的安装
下载地址:https://www.kernel.org/pub/software/scm/git/
3、创建版本库
(1) 创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录:
$ mkdir learngit
$ cd learngit
$ pwd
/Home/fishman/learngit
(2) 通过git init命令把这个目录变成Git可以管理的仓库
$ git init
(3) 把文件添加到版本库
编写一个readme.txt文件,内容如下:
Git is a version control system.
Git is free software.
把一个文件放到Git仓库只需要两步。
第一步,用命令git add告诉Git,把文件添加到仓库:
$ git add readme.txt
第二步,命令git commit告诉Git,把文件提交到仓库:
$ git commit -m "wrote a readme file"
注意:-m后面输入的是本次提交的说明
可以多次add不同的文件,比如:
$ git add file1.txt
$ git add file2.txt
$ git add file3.txt
$ git commit -m "add 3 files."
小结:
初始化一个Git仓库,使用git init命令。
添加文件到Git仓库,分两步:
第一步,使用命令git add ,注意,可反复多次使用,添加多个文件;
第二步,使用命令git commit,完成。
4查看状态
msysgit是Windows版的Git,从http://msysgit.github.io/下载,然后按默认选项安装即可。
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东东。
安装完成后,还需要最后一步设置,在命令行输入:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。
注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
二、 在Linux上安装Git
1、下载和安装GIT
如果你碰巧用Debian或Ubuntu Linux,通过一条“sudo apt-get install git”就可以直接完成Git的安装
下载地址:https://www.kernel.org/pub/software/scm/git/
下载后并解压后切换到其目录
$ tar jxv -f git-2.3.3.tar.bz2
$ cd git-2.3.3
使用默认配置进行安装,如果想修改配置,可以使用 ./configure --help 来获取帮助
$ ./configure
$ make
$ make install
2、初始化配置
GIT默认安装在 /usr/local/bin ,安装之后可以验证一下是否安装好
$ whereis git
git: /usr/local/bin/git
$ git --version
git version 2.3.3
$ git --help
首先需要指定用户名和电子邮件地址
$ git config --global user.name “GIT Admin”
$ git config --global user.emal kk@163.com
再验证一下配置信息
$ git config --list
user.name=GIT Admin
user.email=kk@163.com
其实这些配置是存放在个人主目录下的 .gitconfig 文件中
$ cat ~/.gitconfig
[user]
name = GIT Admin
email = kk@163.com
3、创建版本库
(1) 创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录:
$ mkdir learngit
$ cd learngit
$ pwd
/Home/fishman/learngit
(2) 通过git init命令把这个目录变成Git可以管理的仓库
$ git init
(3) 把文件添加到版本库
编写一个readme.txt文件,内容如下:
Git is a version control system.
Git is free software.
把一个文件放到Git仓库只需要两步。
第一步,用命令git add告诉Git,把文件添加到仓库:
$ git add readme.txt
第二步,命令git commit告诉Git,把文件提交到仓库:
$ git commit -m "wrote a readme file"
注意:-m后面输入的是本次提交的说明
可以多次add不同的文件,比如:
$ git add file1.txt
$ git add file2.txt
$ git add file3.txt
$ git commit -m "add 3 files."
小结:
初始化一个Git仓库,使用git init命令。
添加文件到Git仓库,分两步:
第一步,使用命令git add ,注意,可反复多次使用,添加多个文件;
第二步,使用命令git commit,完成。
4查看状态
如果本地的文件和远端GIT仓库上的文件相比没有任何改动,则
$ git status
# On branch master
nothing to commit (working directory clean)
如果本地做了改动但是没有提交,则
$ git status
# 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 -a")
果能看看具体修改了什么内容
5.用下面命令查看文件历史和以往的注释
$git log
commit 5be389439585f002a12a1da547abbf0baf36fc81
Author: GIT Admin <hywerr@163.com>
Date: Sun Apr 12 12:04:39 2015 +0800
supper man
commit c2a2f542c42a33907e61cc4fa5f3be671a4ecf97
Author: GIT Admin <hywerr@163.com>
Date: Sun Apr 12 12:02:56 2015 +0800
版本回退
--------------------
Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交“ 5be389439585f002a12a1da547abbf0baf36fc81”,上一个版本就是HEAD^,上上个版本就是HEAD^^,当然往上100 个版本写100个^比较容易数不过来,所以写成HEAD~100。
现在,我们要把当前版本“ supper man”回退到上一个版本“add distributed”,就可以使用git reset命令:
$ git reset --hard HEAD^
也可以使用commit id,如
$ git reset --hard 5be3894
不用全写5be389439585f002a12a1da547abbf0baf36fc81,只写前面几个即可。
命令格式:git reset --hard commit_id
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本
工作区和暂存区
--------------------
工作区:learngit
版本库:.git
暂存区: stage
前面把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用“git add”把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用“git commit”提交更改,实际上就是把暂存区的所有内容提交到当前分支.
管理修改
--------------------
Git跟踪并管理的是修改,而非文件.
Git是跟踪修改的,每次修改,如果不add到暂存区,那就不会加入到commit中
撤销修改
先用git status查看一下:
$ git status
Git会告诉你,git checkout -- file可以丢弃工作区的修改:
$ git checkout -- readme.txt
命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态,
一种是readme.txt已经添加到暂存区后,作了修改,现在,撤销修改就回到添加到暂存区后的状态.
总之,就是让这个文件回到最近一次git commit或git add时的状态。
git checkout -- file命令中的“--”很重要,没有“--”,就变成了“创建一个新分支”的命令。
Git同样告诉我们,用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区:
$ git reset HEAD readme.txt
Unstaged changes after reset:
M readme.txt
git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,
表示最新的版本。
还记得如何丢弃工作区的修改吗
$ git checkout -- readme.txt
小结:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第1步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退节,不过前提是没有推送到远程库。
删除?文件
-----------------------
在Git中,删除也是一个修改操作,我们实战一下,先添加一个新文件test.txt到Git并且提交
$ git add test.txt
$ git commit -m "add test.txt"
[master 94cdc44] add test.txt 1 file changed, 1 insertion(+) create mode 100644 test.txt
一般情况下,你通常直接在文件管理器中把没用的文件删了,或者用rm命令删除了:
$ rm test.txt
这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,git status 立刻告诉你哪些文件被删除了
$ git status
现在你有两个选择,一是确实要从版本库中删除该文件,那就用git rm 命令, 并且commit:
$ git rm test.txtrm 'test.txt'
$ git commit -m "remove test.txt"
[master d17efd8] remove test.txt
1 file changed, 1 deletion(-)
delete mode 100644 test.txt
现在,文件就从版本库中被删除了。
另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
$ git checkout -- test.txt
git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都
可以“一键还原”。
创建与合并分?支
---------------------------
Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout -b name
合并某分支到当前分支:git merge name
删除分支:git branch -d name
参考:http://wenku.baidu.com/link?url=_8DT7N62OQQiY2B_NuUuX2v3sOH_ziJeNHjaL3if77xCYPPqev1r__KZ8WGklFNE4Ikyny1cZsETKUqz8t6G9j7-kDIybEhnobLjvbqI5yi --git教程
$git log
commit 5be389439585f002a12a1da547abbf0baf36fc81
Author: GIT Admin <hywerr@163.com>
Date: Sun Apr 12 12:04:39 2015 +0800
supper man
commit c2a2f542c42a33907e61cc4fa5f3be671a4ecf97
Author: GIT Admin <hywerr@163.com>
Date: Sun Apr 12 12:02:56 2015 +0800
版本回退
--------------------
Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交“ 5be389439585f002a12a1da547abbf0baf36fc81”,上一个版本就是HEAD^,上上个版本就是HEAD^^,当然往上100 个版本写100个^比较容易数不过来,所以写成HEAD~100。
现在,我们要把当前版本“ supper man”回退到上一个版本“add distributed”,就可以使用git reset命令:
$ git reset --hard HEAD^
也可以使用commit id,如
$ git reset --hard 5be3894
不用全写5be389439585f002a12a1da547abbf0baf36fc81,只写前面几个即可。
命令格式:git reset --hard commit_id
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本
工作区和暂存区
--------------------
工作区:learngit
版本库:.git
暂存区: stage
前面把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用“git add”把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用“git commit”提交更改,实际上就是把暂存区的所有内容提交到当前分支.
管理修改
--------------------
Git跟踪并管理的是修改,而非文件.
Git是跟踪修改的,每次修改,如果不add到暂存区,那就不会加入到commit中
撤销修改
先用git status查看一下:
$ git status
Git会告诉你,git checkout -- file可以丢弃工作区的修改:
$ git checkout -- readme.txt
命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态,
一种是readme.txt已经添加到暂存区后,作了修改,现在,撤销修改就回到添加到暂存区后的状态.
总之,就是让这个文件回到最近一次git commit或git add时的状态。
git checkout -- file命令中的“--”很重要,没有“--”,就变成了“创建一个新分支”的命令。
Git同样告诉我们,用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区:
$ git reset HEAD readme.txt
Unstaged changes after reset:
M readme.txt
git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,
表示最新的版本。
还记得如何丢弃工作区的修改吗
$ git checkout -- readme.txt
小结:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第1步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退节,不过前提是没有推送到远程库。
删除?文件
-----------------------
在Git中,删除也是一个修改操作,我们实战一下,先添加一个新文件test.txt到Git并且提交
$ git add test.txt
$ git commit -m "add test.txt"
[master 94cdc44] add test.txt 1 file changed, 1 insertion(+) create mode 100644 test.txt
一般情况下,你通常直接在文件管理器中把没用的文件删了,或者用rm命令删除了:
$ rm test.txt
这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,git status 立刻告诉你哪些文件被删除了
$ git status
现在你有两个选择,一是确实要从版本库中删除该文件,那就用git rm 命令, 并且commit:
$ git rm test.txtrm 'test.txt'
$ git commit -m "remove test.txt"
[master d17efd8] remove test.txt
1 file changed, 1 deletion(-)
delete mode 100644 test.txt
现在,文件就从版本库中被删除了。
另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
$ git checkout -- test.txt
git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都
可以“一键还原”。
创建与合并分?支
---------------------------
Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout -b name
合并某分支到当前分支:git merge name
删除分支:git branch -d name