git的安装
1.直接从终端运行命令(Ubuntu)进行安装,版本可能不是最新的
[plain]
sudo apt-get install git
2.在官网下载源代码编译安装,参考目录下的INSTALL文件,下载地址
[html]
make prefix=/usr/local all
sudo make prefix=/usr/local install
3.从git版本库克隆安装
[plain]
git clone git://git.kernel.org/pub/scm/git/git.git
cd git
git fetch #更新
git clean -fdx
git reset --hard #清理工作
git tag #显示一个版本号,比如v1.8.4
git checkout v1.8.4
make prefix=/usr/local all
sudo make prefix=/usr/local install
git简介
git是一个版本控制系统,git的工作目录由工作区、暂存区(stage)、版本库三部分构成,工作区就是存放代码的根目录,暂存区和版本库都是隐藏在.git目录中的数据文件中,用相关命令查看其属性。
git配置
[plain]
git config --global user.name "test"
git config --global user.email test@gmail.com
git config --global color.ui true
git基本操作
git init--工作目录的初始化,创建.git文件夹等
[plain]
mkdir workspace
cd workspace
git init
或者
[plain]
git init workspace
cd workspace
git add--将工作目录中的改动添加到暂存区中,可以git help add 查看详细帮助
[plain]
git add . 把本地所作的更改添加到暂存区中
git add -u 只有被追踪的本地文件所作的更改添加到暂存区中,当删除/移动文件时用这条命令比较合适
git add -A 把本地文件所有的更改添加到暂存区中,无论文件是否被追踪,适用于添加/删除/移动文件
git add -f 强制添加被忽略的文件
git commit--将暂存区中的更改提交到版本库中,git commit之前应该git add
[plain]
git commit -m "Fisrt commit, git init."
git commit -a -m "Second commit without git add." 加上-a选项,提交之前不必再执行git add
git 查看操作
git status-- 查看工作区的状态
[plain]
git status -s #文件名之前会有M/A等缩写,如果M在第一列,代表版本库与暂存区文件对比有改变,M在第二列时,代表暂存区与工作区有改变
git log--查看提交记录
[plain]
git log --oneline #以简单模式查看提交记录
git diff--查看工作区/暂存区/版本库之间的差别
[plain]
git diff #查看暂存区与工作区之间的差别
git diff --cached #<span style="font-family:Arial,Helvetica,sans-serif">查看暂存区与</span><span style="font-family:Arial,Helvetica,sans-serif">版本库之间的差别</span>
git ls-file--查看暂存区文件
[plain]
git ls-files -v #查看暂存区文件
git ls-files --with-tree=HEAD^ #查看最近一次提交到版本库中的文件
git cat-file -p--查看文件内容,以及恢复个别文件
[plain]
git cat-file -p HEAD^:file.txt #查看版本库中某个文件的内容
git cat-file -p HEAD^:file.txt > file.txt #从版本库中恢复某个被误删除的文件
git修改操作
git mv--移动或者重命名一个文件/目录/符号链接
git rm--从工作区和暂存区删除一个文件
[plain]
git rm #同时删除工作区和暂存区的文件,rm只是删除工作区中的文件(没有真正的删除,以后提交到版本库这个文件<span style="font-family:Arial,Helvetica,sans-serif">还是存在</span><span style="font-family:Arial,Helvetica,sans-serif">)</span>
.gitignore文件--忽略文件规则,git add时不会添加到暂存区(.gitignore可以放置在任何文件夹下,作用范围是所处目录以及子目录)
[plain]
*~ #忽略vim备份文件
*.swp #忽略vim缓存文件
*.o #忽略编译文件
git保存/恢复操作
git checkout--检出分支到工作区(默认对暂存区进行操作)
[plain]
git checkout #汇总显示工作区暂存区与HEAD的差异
git checkout --filename #用暂存区中过的filename覆盖工作区中的filename
git checkout . #在工作区中取消相对于暂存区中的所有更改
git reset--重置当前HEAD到指定的状态(默认对HEAD进行操作)
[plain]
git reset [HEAD] #用HEAD指向的目录树重置暂存区,工作区不受影响,相当于撤销git add所作的更改
git reset --filename #git add filename 的反向操作
git reset --soft HEAD^ #暂存区和工作区不变,引用向前回退一次,以便git commit 从新提交
git reset HEAD^ #工作区不变,暂存区和引用回退到上一次提交之前
git reset --hard HEAD^ #引用回退一次,暂存区和工作区回退到上一次提交之前
git stash--保存工作区中的进度
git stash list--显示保存的进度
git stash pop--恢复保存的进度
git stash apply --可以多次恢复保存的进度
git tag--创建里程碑
总结:
git init--初始化
git add--把工作区的更改添加到暂存区
git commit--把暂存区的更改提交到版本库
git reset--操作HEAD,影响(重置)暂存区
git checkout--操作暂存区,影响(重置)工作区
git status--查看工作区状态