windows配置用户名和密码
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
windows创建ssh秘钥 ssh-keygen -t rsa -C "email@example.com"
基本操作
初始化repo git init
查看工作区文件状态 git status
将文件添加到暂存区 git add your file
暂存区的意义 : 分批、分阶段递交,进行快照,便于回退
将文件从暂存区提交到分支 git commit -m "your tips"
查看已提交的历史记录 git log
简化历史记录 git log --pretty=oneline
回退到上一个版本 git reset --hard HEAD^
HEAD指向的是现在使用中的分支的最后一次更新
回退到任意版本 git reset --hard version commit id(可截取前六个)
找回版本commit id git reflog
工作区或暂存区回退到最近更改 git checkout -- your file
删除工作区的文件 git rm your file
删除版本库里的文件 git rm your file + git commit -m "delete file"
本地关联远程库 git remote add origin your repo url
本地推送到远程库 git push origin master
首次推送添加-u 将本地的master
分支和远程的master
分支关联起来
从远程库克隆 git clone your repo url
显示远程库 git remote
本地拉取远程库的代码 git pull origin master
查看远程库的修改 git fetch origin master
pull = fetch + merge
分支部分
分支区分为Merge分支 和 Topic分支
- Merge分支是为了可以随时发布release而创建的分支,可作为Topic分支的源分支使用
- Topic分支是为了开发新功能或修复Bug等任务而建立的分支
- Topic分支是从稳定的Merge分支创建的。完成作业后,要把Topic分支合并回Merge分支
创建分支 git branch branch name
切换分支 git checkout branch name
创建分支和切换分支简洁写法 git checkout -b branch name
查看当前分支 git branch
删除分支 git branch -d branch name
分支合并以及冲突处理
分支合并分为merge 或rebase
- 使用merge可以合并多个历史记录的流程,会保持修改内容的历史记录,但是历史记录会很复杂
- 历史记录简单,是在原有提交的基础上将差异内容反映进去。
因此,可能导致原本的提交内容无法正常运行。
合并merge分支
- 主分支合并子分支
git merge branch name
若是多个分支并行操作用merge方式合并的话需要手动更改冲突部分
分支rebase合并
- 子分支请求rebase主分支
git rebase master
- 若是多个分支并行,修改冲突
- 添加子分支的更改文件到暂存区
git add your file
- 提交更改不能用commit提交
git rebase --continue
- 切换到主分支
git checkout master
- 合并子分支
git merge branch name
标签
Git可以使用2种标签
- 轻标签 ,为了在本地暂时使用或一次性使用。
- 注解标签 ,发布标签是采用注解标签来添加注解或签名的
添加轻标签 git tag tag name
显示标签列表 git tag
添加注解标签以及添加注解 git tag -am "your tips" tag name
显示标签列表和标签注解 git tag -n
删除标签 git tag -d tagname
提交操作
以下对于提交操作的修改在添加命令后都会在命令行编辑工具中进行编辑才会生效
- 修改最近一次的提交备注
git commit --amend
- 取消最近一次的提交
git revert HEAD
- 舍弃最近的提交
git reset --hard HEAD~
等同于上面的版本回退 - 对于上面
git reset
操作的还原git reset --hard ORIG_HEAD
- 提取其他分支的提到自己的分支上
git cherry-pick commit id
,commit id 指的是想要提取的其他分支那个版本的id - 汇合过去两次的提交为一次
git rebase -i HEAD~~
需要在命令行下面的编辑工具中将第二行的“pick”改成“squash”,然后保存并退出 - 修改提交备注
git rebase -i HEAD~~
,需要在命令行下面的编辑工具中将第二行的“pick”改成“edit”,然后保存并退出,然后git add
添加到暂存区,用commit --amend
保存修改,最后合并git rebase --continue
- 子分支的所有提交一起合并到主分支
git merge --squash branch name
squash 是merge的特殊选项:用这个选项指定分支的合并,就可以把所有汇合的提交添加到分支上。