基础
初始化版本库
git init
将修改添加到暂存区
git add <file>
将暂存区提交到版本库分支
git commit -m "message"
跳过暂存区直接提交工作区的修改
git commit -a -m '修改内容说明'
查看工作区的状态
git status
查看工作区修改内容,即工作区与暂存区的区别
git diff <file>
恢复到指定id的版本
git reset --hard <commitid>
查看提交历史
git log
查看格式化后的提交历史
git log --pretty=oneline
查看未来的历史命令
git reflog
查看工作区和版本库里面最新版本的区别
git diff HEAD -- readme.txt
用版本库里<file>的版本替换工作区<file>的版本
git checkout -- <file>
一种是<file>自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是<file>已经添加到暂存区后,又作了修改,撤销修改就回到添加到暂存区后的状态。
可以把暂存区的修改撤销掉,不修改工作区
git reset HEAD <file>
从版本库中删除文件git rm <file>
远程仓库
创建SSH Key
ssh-keygen -t rsa -C "youremail@example.com"
与远程仓库建立关联
git remote add origin git@github.com/liuyuantao1990/git-test.git
把本地库的所有内容推送到远程库
git push -u origin master
第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令以HTTPS协议形式从远程库克隆内容的到本地库
git clone https://github.com/liuyuantao1990/git-test.git
以SSH协议形式从远程库克隆内容的到本地库
git clone git@github.com:liuyuantao1990/git-test.git
从远程仓库抓取数据
git fetch <remote-name>
查看远程仓库信息
git remote show <remote-name>
远程仓库重命名
git remote rename <old-name> <new-name>
分支管理
master分支是主分支,因此要时刻与远程同步;
dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
创建并切换<name>分支
git checkout -b <name>
查看分支
git branch
创建<name>分支
git branch <name>
切换到<name>分支
git checkout <name>
合并指定分支到当前分支
git merge <name>
删除<name>分支
git branch -d <name>
查看分支的合并情况
git log --graph --pretty=oneline --abbrev-commit
查看分支合并图
git log --graph
采用普通模式合并制定分支到当前分支
git merge --no-ff -m "普通模式合并分支" <name>
本地分支管理
保存工作区的内容,以后恢复工作区后可以继续工作
git stash
恢复保存的工作区,但是恢复后,stash内容并不删除
git stash apply
删除保存的工作区的内容
git stash drop
恢复保存的工作区,同时删除stash内容
git stash pop
强行删除分支
git branch -D <name>
远程分支管理
查看远程库的信息
git remote
查看远程库的详细信息
git remote -v
将master分支推送到远程库对应的远程分支
git push origin master
从远程抓取分支
git pull
建立本地<branch-name>分支和远程<branch-name>分支的关联
git branch --set-upstream <branch-name> origin/<branch-name>
标签操作
新建标签
git tag v1.0
根据提交的id创建带说明的标签
git tag -a v0.1 -m "version 0.1 released" commit id
查看所有标签
git tag
查看<tagname>标签信息
git show <tagname>
推送一个本地标签到远程
git push origin <tagname>
推送全部未推送过的本地标签到远程
git push origin --tags
删除标签
git tag -d v0.1
删除远程标签
git push origin :refs/tags/v0.1
文件恢复
从暂存区恢复文件到工作区
当执行 "git checkout ." 或者 "git checkout -- <file>" 命令时,会用暂存区全部或指定的文件替换工作区的文件。
从版本库恢复文件到工作区和暂存区
当执行 "git checkout HEAD ." 或者 "git checkout HEAD <file>" 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区以及工作区中的文件。
从版本库恢复提交到暂存区
git reset --soft <commitid>
从版本库恢复提交到暂存区和工作区,等同于git checkout HEAD .
git reset --hard <commitid>