版本管理,多人协作
- 查看远程库信息
git remote
git reomte -v //显示更详细的信息
- 删除本地的远程库
git remote rm origin
- 推送分支
git push origin <branchname>
- 抓取远程分支的新提交
git pull
- 关联本地分支和远程分支
git branch --set-upstream branch-name origin/branch-name
//远程分支和本地的名称最好一样
版本回退
- 查看提交log
git log
可以用--pretty=oneline
参数来格式化
- 回退到上一个版本,HEAD代表上一个版本,如果是上100个话就是
HEAD~100
git reset --hard HEAD^
- 回到指定的某个版本
git reset --hard <版本号>
- 显示每一次命令,可以用来找到版本号,从而回到任意一个版本
git reflog
撤销修改
- 把filename文件的修改撤销,就是让这个文件回到最近一次
git commit
或git add
时的状态
git checkout -- <filename>
- 撤销暂存区的修改,重新放回工作区
git reset HEAD <filename>
删除文件
- 从版本库中删除文件
git rm <filename> //从暂存区删除
git commit -m "remove filename"
- 删错了,从版本库中把文件恢复到最新版本
git checkout HEAD -- <filename>
或
git checkout HEAD <filename>
远程仓库
- 关联远程仓库
git remote add origin git@server-name:username/repo-name.git
- 将本地库推送到远程库,
git push -u origin master//第一次推送
//由于远程库是空的,我们第一次推送master分支时,
//加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,
//还会把本地的master分支和远程的master分支关联起来,
//在以后的推送或者拉取时就可以简化命令
git push origin master //推送
- 克隆远程仓库
git clone git@server-name:username/repo-name.git
git clone url-address
分支管理
- 创建新分支
git checkout -b <branchname>//加上 -b 参数代表创建并切换
//相当于下列两条命令
git branch <branchname>
git checkout <branchname>
- 查看当前分支
git branch
//git branch 命令会列出所有分支,当前分支前面会打*号
git branch -a //查看所有分支
- 合并分支
git merge <branchname>//用于合并指定分支到当前分支
- 删除分支
git branch -d <branchname>
- 查看分支合并情况(分支合并图)
git log --graph //使用此命令查看合并图
//示例
git log --graph --pretty=oneline --abbrev-commit
//结果示例如下
* 59bc1cb conflict fixed
|\
| * 75a857c AND simple
* | 400b400 & simple
|/
* fec145a branch test
...
- 使用 –no-ff 参数禁用 Fast forward
git merge --no-ff -m "merge with no-ff" <branchname>
//因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去
- bug分支,隐藏工作区间
git stash //把当前工作区间隐藏
git stash list //查看stash列表
git stash apply <stash@{0}> //恢复stash,但stash并不删除,可通过git stash drop 删除
git stash drop //删除stash
git stash pop //恢复stash并删除stash
- 强行删除为合并分支
git branch -D <branchname> //不要轻易使用
远程分支
- 新建远程分支
git push origin branch-name:branch-name
//将本地分支推送给远程,一般远程分支和本地分支名称一样
- 删除远程分支
//推送一个空分支给远程,相当于删除
git push origin :branch-name
//删除远程分支
git push origin --delete branch-name
标签管理
- 创建和查看标签
git tag //查看所有标签
git tag <tag-name> //打一个新标签,默认是HEAD
git tag <tag-name> <commit-id> //为指定的commit-id打标签
git show <tag-name> // 查看标签信息
- 操作标签
git tag -d <tag-name> //删除标签
git push origin <tag-name> //推送标签到远程
git push origin --tags //推送所有标签到远程
- 删除远程标签
git tag -d <tag-name> //需要先删除本地标签
git push origin :refs/tags/tag-name //然后把标签推送到远程