安装git
- 下载安装包 下载地址
 - 安装git
 - 进入命令行,输入git看看是否成功
 
配置git
- 配置全局用户名和密码
`git config –global user.name “John Doe”
git config –global user.email johndoe@example.com
` - 配置ssh公钥
cd ~/.ssh然后ls
如果没有,直接生成,一路点击enter
```
ssh-keygen
cat ~/.ssh/id_rsa.pub
```
把公钥配置到github的个人设置 
常用的命令
repository操作
- 检出(clone)仓库代码:
git clone repository-url/git clone repository-url local-directoryname- 例如,clone jquery 仓库到本地: 
git clone git://github.com/jquery/jquery.git - clone jquery 仓库到本地,并且重命名为 my-jquery :
git clone git://github.com/jquery/jquery.git my-jquery 
 - 例如,clone jquery 仓库到本地: 
 - 查看远程仓库:
git remote -v - 添加远程仓库:
git remote add [name] [repository-url] - 删除远程仓库:
git remote rm [name] - 修改远程仓库地址:
git remote set-url origin new-repository-url - 拉取远程仓库: 
git pull [remoteName] [localBranchName] - 推送远程仓库: 
git push [remoteName] [localBranchName] 
- 检出(clone)仓库代码:
 提交/拉取/合并/删除
- 添加文件到暂存区(staged):
git add filename/git stage filename - 将所有修改文件添加到暂存区(staged): 
git add --all/git add -A - 提交修改到暂存区(staged):
git commit -m 'commit message'/git commit -a -m 'commit message'注意理解 -a 参数的意义 - 从Git仓库中删除文件:
git rm filename - 从Git仓库中删除文件,但本地文件保留:
git rm --cached filename 重命名某个文件:
git mv filename newfilename或者直接修改完毕文件名 ,进行git add -A && git commit -m 'commit message'Git会自动识别是重命名了文件获取远程最新代码到本地:
git pull (origin branchname)可以指定分支名,也可以忽略。pull 命令自动 fetch 远程代码并且 merge,如果有冲突,会显示在状态栏,需要手动处理。更推荐使用:git fetch之后git merge --no-ff origin branchname拉取最新的代码到本地仓库,并手动 merge 。
- 添加文件到暂存区(staged):
 日志查看
- 查看日志:
git log - 查看日志,并查看每次的修改内容:
git log -p - 查看日志,并查看每次文件的简单修改状态:
git log --stat - 一行显示日志:
git log --pretty=oneline/git log --pretty='format:"%h - %an, %ar : %s' - 查看日志范围:
- 查看最近10条日志:
git log -10 - 查看2周前:
git log --until=2week或者指定2周的明确日期,比如:git log --until=2015-08-12 - 查看最近2周内:
git log --since=2week或者指定2周明确日志,比如:git log --since=2015-08-12 - 只查看某个用户的提交:
git log --committer=user.name/git log --author=user.name 
 - 查看最近10条日志:
 
- 查看日志:
 取消操作
- 上次提交msg错误/有未提交的文件应该同上一次一起提交,需要重新提交备注:
git commit --amend -m 'new msg' - 一次
git add -A后,需要将某个文件撤回到工作区,即:某个文件不应该在本次commit中:git reset HEAD filename - 撤销某些文件的修改内容:
git checkout -- filename注意:一旦执行,所有的改动都没有了,谨慎!谨慎!谨慎! - 将工作区内容回退到远端的某个版本:
git reset --hard <sha1-of-commit>--hard:reset stage and working directory ,以来所有的变更全部丢弃,并将 HEAD 指向 --soft:nothing changed to stage and working directory ,仅仅将HEAD指向,所有变更显示在”changed to be committed”中 --mixed:default,reset stage ,nothing to working directory ,这也就是第二个例子的原因
 
- 上次提交msg错误/有未提交的文件应该同上一次一起提交,需要重新提交备注:
 比较差异
- 查看工作区(working directory)和暂存区(staged)之间差异:
git diff - 查看工作区(working directory)与当前仓库版本(repository)HEAD版本差异:
git diff HEAD - 查看暂存区(staged)与当前仓库版本(repository)差异:
git diff --cached/git diff --staged 
- 查看工作区(working directory)和暂存区(staged)之间差异:
 合并操作
- 解决冲突后/获取远程最新代码后合并代码:
git merge branchname - 保留该存在版本合并log:
git merge --no-ff branchname参数--no-ff防止 fast-forward 的提交 
- 解决冲突后/获取远程最新代码后合并代码: