Pro Git
简介
- 状态:已读
- 作者:Scott Chacon
- 链接:http://git-scm.com/book
安装配置
mac下安装很方便,使用brew直接安装
brew install git
安装完成以后记得配置一下,最好不要乱变。我之前交到github上的代码各种名字都有,非常混乱…
git config --global user.name "SuYan"
git config --global user.email [email protected]
配置修改的文件其实是~/.gitconfig
里的参数,也可以直接拿vim打开变更
Git基础
初始化项目
创建一个新项目
git init
git add README
git commit -m "initial project version"
如果不是从本地初始化项目,那么可以从远程克隆一个项目过来,例如从github上
git clone git://github.com/schacon/grit.git
git clone git://github.com/schacon/grit.git mygrit
文件更改、提交和回退
untracked状态
untracked状态即未由git管理
mkdir test && cd test && git init && touch README && git status
将untracked转为tracked状态
git add README && git status
从tracked状态转成untracked
git rm README --cached
unmodified状态和modified状态
unmodified状态是一个文件已经成为git管理的对象,而且已经提交过
git commit -m "add README file" && git status
之后就是unmodified状态了,这个时候可以进行文件修改和删除功能。删除一个文件可以:
git rm -f README
rm README
移动文件
git mv file_from file_to
修改文件直接显示成为modified状态
echo "sss" > README
查看修改
git diff
从modified状态回到unmodified状态
git checkout -- README
staged状态
staged状态指提交到版本控制库里
git commit -m "add README file" && git status
直接从modified状态进入staged状态
git commit -a -m "add README file" && git status
查看最新一次提交的修改
git diff -cached
查看最近两次更改/更新
git log -p -2
git log -2
提交完成后,文件进入staged暂存区,同时进入unmodified状态。如果想将REAMDE文件从staged状态回到提交前的modified状态
git reset HEAD README
再次修改如果不想重新生成commit,可以利用
git commit --amend
使用下面命令可以查看文件提交历史纪录
git log
回退到某次commit状态
git reset --hard HEAD^^
git reset --hard HEAD~2
git reset --hard as123s
忽略文件
在每个git控制的库中,都可以增加一个.gitignore
文件来控制例外的文件,即不想被git控制的一些临时文件或私有文件。它的文件格式如下:
# 注释将被 Git 忽略
# 忽略所有 .a 结尾的文件
*.a
# 但 lib.a 除外
!lib.a
# 仅仅忽略项目根目录下的 TODO 文件
# 不包括 subdir/TODO
/TODO
# 忽略 build/ 目录下的所有文件
build/
# 忽略 doc 目录下的所有 .txt 文件
# 会忽略 doc/notes.txt
# 但不包括 doc/server/arch.txt
doc/*.txt
远程仓库
查看远程仓库(如果仓库来自clone的话)
git remote -v
增加远程仓库(如果想提交到某远程仓库)
git remote add myremote git://github.com/schacon/grit.git
删除某远程仓库
git remote rm myremote
抓取远程仓库代码
git fetch myremote
git pull
提交代码到远程仓库
git push myremote master