转自:http://mm.fancymore.com/page/39.html
基本名词:Linus为Linux Kernel Project发起的版本控制项目。
HEAD代表当前最新状态。
tag为某个状态的标签。
SHA1为每个提交日志的唯一标识。
一般linux系统会自带git,如果没有可以下载安装包
1。克隆
git clone:
git仓库可以使用git clone获得:
git clone git://url
git clone ssh://url
也可以通过浏览器浏览。
http://url/gitweb/
通过git pull更新仓库,使用git init-db初始化自己的仓库。
2.信息配置config:
开发人员刚开始时候。git会自动提示,需要为git仓库配置相关信息,这样在提交代码时,这些信息会自动
反映在git仓库的日志中。
git config user.name "your name"
git config user.email yourname@email_server
git config core.editor vim
git config core.paper "less -N"
git config color.diff true
git config alias.co checkout
git config alias表示,可以用git co代表git checkout。git var -l可以查看
已经设置的配置。
3.查看日志
log:
git log file 查看一个文件的改动。
git log -p 查看日志和改动。
git log tag1..tag2 查看两个tag之间的日志。
git log -p tag1..tag2 file 查看一个文件在两个tag之间的不同。
git log tag.. 查看tag和HEAD之间的不同。
4.初始化一个工作区: 到某个目录下:
cd /dir/dir
git init
5.添加文件
这样任何改动都处于git版本库的管理下了。在该目录下创建一个readme.txt文件,再运行git status命令,将会看到git提示readme.txt文件处于为“Untracked files”列表中,并给出了“(use git add <file>… to include in what will be committed)”的建议。此时可以使用git add readme .txt将例子文件readme.txt文件加入到暂存区。(README 自己创建的文件)
git add readme.txt
git commit -m “create readme.txt”
完成了一个文件从创建到提交的完整过程:
git status – 查看git版本库的状态(这一步不是必须的,但是个好习惯)
git add <file> – 将文件提交到暂存区(通常是在通过git status命令后,可以很清楚地看到文件的变更信息,决定哪些文件需要提交到暂存区)
git commit – 提交更改(只有处于暂存区的文件会被提交),直接使用git commit命令会调用提交说明窗口。
6. 删除文件
可以使用git rm <file>:
git rm filename
当然其实你也可以直接在文件目录中手动删除,这两者的区别在于:使用git rm命令相当于手动删除后使用add命令将更改添加到暂存区域。
6.文件的三种状态
跟踪下的文件具有三种状态:
已修改(modified) 已修改过的文件
已暂存(staged) 通过git add命令添加到暂存区域的文件
已提交(committed) 通过git commit命令提交过的文件
工作目录,暂存区域,以及本地仓库
工作目录,暂存区域,以及本地仓库
Git中从远程的分支获取最新的版本到本地有这样2个命令:
1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge
git fetch origin master
git log -p master..origin/master
git merge origin/master
以上命令的含义:
首先从远程的origin的master主分支下载最新的版本到origin/master分支上
然后比较本地的master分支和origin/master分支的差别
最后进行合并
上述过程其实可以用以下更清晰的方式来进行:
git fetch origin master:tmp
git diff tmp
git merge tmp
从远程获取最新的版本到本地的test分支上
之后再进行比较合并
2. git pull:相当于是从远程获取最新版本并merge到本地
git pull origin master
上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并