0 安装与配置(Linux)
$ sudo apt-get install git
$ git config --global user.name "Your Name"
$ git config --global user.email "youremail@example.com"
1 本地版本库
$ cd <path>
#跳转到需要初始化为仓库的目录
$ git init
#当前目录成为工作区Working Directory
$ git add <file>
#添加文件到暂存区 stage
$ git rm <file>
#告知暂存区删除了某个文件
$ git commit -m "memo"
#提交变更到仓库Repository的 master分支
$ git status
# 查看当前状态, 哪些文件有变更,哪些文件待提交
$ git diff <file>
#查看该文件有哪些变更
$ git log
#查看提交日志,可以看到commit id以及备注
$ git reflog
#查看命令日志
$ git reset <commit id>
#回退到指定id的提交之后的状态, id可以只写前几位
$ git reset HEAD <file>
#撤销暂存(add),即回到工作区
$ git checkout -- <file>
#撤销该文件的变更,如果暂存区有就回到暂存区的状态,否则就回到版本库的状态
$ git stash
#保存现场,可以切换分支,修改,提交,而不影响现场
$ git stash list
#查看储藏列表
$ git stash apply
#应用现场, 储藏列表依然存在
$ git stash pop
#弹出现场, 恢复的同时 储藏列表的记录页删除了
$ git stash apply/pop
stash@{0}
#可指定列表的某个现场
2 远程仓库
$ ssh-keygen -t rsa -C "youremail@example.com"
#根据邮箱生成SSH的公钥和私钥,在~/.ssh/目录下 id_rsa是私钥, id_rsa.pub是公钥
#登录GitHub, 添加公钥, 可以让GitHub识别本机的提交是否为本人
#创建一个Git仓库, 记下仓库地址,ssh地址是
git@github.com:<youraccount>/<repositoryname>
#https地址 是 https://github.com/<youraccount>/<repositoryname>
$ git remote add origin <仓库地址>
# origin是远程库的名字,关联本地库与远程库
$ git remote -v
#查看远程库信息
$ git push -u origin master
#提交本地库到origin远程库的master分支 -u参数在第一次用,可以关联分支
#第一次clone或者push时会有警告,需要校验github.com的RSA指纹信息是否一致
$ git clone <仓库地址>
#克隆远程库到本地当前目录
3 分支管理
HEAD 指向当前分支 主分支默认是master
每次提交后, master和HEAD都会指向新的提交状态
创建一个新的分支dev , HEAD和dev指向新的提交状态,而master停留在原来的状态
$ git branch
#查看所有分支 带*号是当前分支
$ git branch <branchname>
#创建分支
$ git checkout <branchname>
#切换到指定分支
$ git checkout -b <branchname>
#创建并切换到新分支
$ git checkout -b <branchname> <origin/branchname>
#创建对应远程分支的本地分支
$ git merge <branchname>
#合并指定分支到当前分支 Fast Forward模式是不产生新的提交状态的
$ git merge --no-ff -m <memo> <branchname>
#增加--no-ff参数禁用Fast Forward模式,相当于重新提交,因而要-m参数写备注
$ git branch -d <branchname>
#删除指定分支
$ git branch -D <branchname>
#对于还未合并的分支,用这个强行删除
$ git status
#查看冲突 编辑文件后 重新提交
#分支策略,master 仅用于发布稳定版 dev为不稳定的开发版,
#团队各自有分支,时不时往dev提交,到发布时再将dev合并到master
$ git push origin <branchname>
#向远程分支推送修改
#如果推送失败,说明远程分支比本地的更新
$ git pull #抓取远程合并到本地,如有冲突,解决冲突并提交,之后再重试push
# 如果pull提示no tracking information 则创建关联
$ git branch --set-upstream <branchname> <origin/branchname>
$ git tag <tagname>
#给最近一次commit打上标签
$ git tag <tagname> <commitid>
#给指定的提交打上标签
$ git tag -a <tagname> -m <memo> <commitid> #额外添加备注
$ git tag
#查看所有标签
$ git show <tagname>
#查看标签信息
$ git tag -d <tagname>
#删除tag
$ git push origin <tagname>
#推送本地标签
$ git push origin --tags
#推送全部未推送的本地标签
$ git push origin :refs/tags/<tagname> #本地删除标签之后可用此命令删除远程的
5GitHub
fork 他人的开源项目,clone 到本地,push到自己的fork,向项目发起pull request
.gitignore 设置了过滤哪些文件不提交
原则是:
1.自动生成的文件,比如.class
2. 配置文件, 跟机器相关,或者是一些敏感信息
$ git config --global alias.st status #设置命令别名
参考链接
Git教程:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
Git教程:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
GotGitHub:http://www.worldhello.net/gotgithub/index.html
Git进阶:
日常使用 Git 的 19 个建议:
http://blog.jobbole.com/96088/