Git学习记录
git简介
git是分布式版本控制系统
集中式vs分布式
相比较集中式版本控制依赖网络,分布式版本控制对网络依赖降低
初次运行git配置
git config工具:用于读取相应的工作环境变量
变量可以存放在不同的地方:
- /etc/gitconfig文件: 系统中对所有用户都普遍适用的配置。适用git config –system的选项就是写入这个文件
- ~/.gitconfig文件: 用户目录下的配置文件只是用于该用户。若使用git config –global选项,读写的就是这个文件。
- 当前项目的git目录中的配置文件(也就是工作目录中的.git/config文件):
这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以.git/config里的配置会覆盖/etc/gitconfig中的同名变量。
用户信息
git config –global user.name “jiao”
git config –global user.email “jiao@163.com”
文本编辑器
git config –global core.editor emacs
差异分析工具
git config –global merge.tool vimdiff
查看配置信息
$ git config –list
user.name=jiao
user.email=jiao@163.com
color.status=auto
color.branch=auto
color.interactive=auto
color.diff=a
有时候会看到重复的变量名,那就说明它们来自不同的配置文件(比如 /etc/gitconfig
和 ~/.gitconfig),不过最终 Git 实际采用的是最后一个
git config user.name
Scott Chacon
git help config
Git基础命令
git初始化目录
git init
初始化后,在当前目录下会出现一个名为.git的目录,所有Git需要的数据和资源都存放在这个目录中。不过目前,仅仅是按照既有的结构框架初始化好了里边所有的文件和目录,但我们还没有开始跟踪管理项目中的任何一个文件。
克隆相关仓库
$ git clone git://github.com/schacon/grit.git myname
记录每次的更新
新文件状态
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
README
nothing added to commit but untracked files present (use "git add" to track)
添加跟踪新文件
$ git add README
git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file:
README
只要在 “Changes to be committed” 这行下面的,就说明是已暂存状态
忽略某些文件
$cat .gitignore
*.log
*.[oa] ##忽略*.a或者*.o结尾的文件
*.a # 忽略所有 .a 结尾的文件
!lib.a # 但 lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
提交
$git commit -m "fix name"
跳过使用暂存区域
$git commit -a -m 'added new benchmarks'
移除文件
删除本地,同时删除git暂存区域
$ rm test
$ git rm test
只删除git 暂存区域
$ git rm --cached readme.txt
移动文件
会提示rename
$git mv README.txt README
$git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed:
README.txt -> README
相当于执行了三条命令
$ mv README.txt README
$ git rm README.txt
$ git add README