|--git命令
|--本地仓库操作
|--查看已操作的命令: git reflog (可通过此命令找回相应版本的commit id)
|--查看版本库状态: git status
|--添加到缓冲区: git add file
|--上传至版本库: git commit -m"说明文字"
|--diff版本库最新的: git diff HEAD -- file
|--查看log: git log
|--查看简单log: git log --pretty=oneline
|--log缩写:git log --pretty=oneline --abbrev-commit
|--回退版本: git reset --hard HEAD^ (两个版本就是"HEAD^^",100个版本就是"HEAD~100")
|--回退至某个版本: git reset --hard 5d91ab2
|--撤销修改: (工作区->缓冲区->版本库)
|--直接丢弃工作区的所有修改,取回最新版本: git checkout HEAD file (与“reset”不同,这只是下载到工作区,没有上传版本库,也可以取倒数第二个版本"HEAD^^")
|--修改后,未添加到缓冲区,取回最新版本: git checkout -- file (一定要加上“--”)
|--添加到缓冲区后,又修改了此文件,想取回缓冲区的内容: git checkout -- file (一定要加上“--”)
总结:运行"git checkout -- file"时,会最先寻找缓冲区,如果缓冲区有过修改则取回缓冲区最新的,否则取版本库最新的
|--删除文件:
|--工作区删除: git rm file
|--版本库删除: 工作去删除后执行, git commit -m"说明"
|--找回删除文件:
|--工作区删除找回: git checkout HEAD file (找回最新版本)
|--版本库删除找回: git checkout HEAD^ file (找回上一版本中的文件,因为最新的版本里没有此文件了)
|--以往版本库找回:git checkout HEAD~100 file 或者 git checkout id(某版本id) file
|--远程仓库操作
|--创建SSH Key: ssh-keygen -t rsa -C "youremail@example.com"
|--第一次上传: git push -u origin master (本地的master分支和远程的master分支关联起来)
|--上传本地最新修改: git push origin master
|--克隆远程库: git clone git@github.com:michaelliao/gitskills.git
|--分支操作
|--查看分支: git branch
|--创建分支: git branch <name>
|--切换分支: git checkout <name>
|--创建+切换分支: git checkout -b <name>
|--合并某分支到当前分支: git merge <name> (一般不这样写,用下面的)
|--合并并记录: git merge --no-ff -m"message" <name> (不用fast forward模式)
|--删除分支: git branch -d <name>
|--查看分支合并图: git log --graph --pretty=oneline
|--主线修复Bug
|--场景:在dev作业的过程中,任务未完(未提交),突然需要修改主线的bug
①储存dev中的文件: git stash
②切到主线,创建临时分支: git checkout -b issue-101
③bug解决完后,切换至主线,完成合并: git add file
git commit -m"message"
git checkout master
git merge --no-ff -m"message" issue-101
git branch -d issue-101
④切回dev,取回储存内容: git checkout dev
git stash apply (或者使用"git stash pop",回复的同时删除存储,否则要手动删除"git stash drop",用"git stash list"查看所有存储)
⑤如要同步主线最新代码: git add file
git commit -m"message"
git merge master(这里可能会有冲突,有的话就需要手动修改,再提交)
|--feature分支
|--开发一个新的功能,最好新建一个分支,类似于修改bug时需要创建分支
|--如果新功能在合并前确认取消了,删除分支: git branch -D <name>
|--多人协作
|--标签管理
|--创建标签: git tag <name> -m"message"(默认HEAD,也可在后加指定某个commit id)
|--标签信息: git tag -a <tagname> -m"message" (默认HEAD,也可在后加指定某个commit id)
|--PGP签名标签: git tag -s <tagname> -m"message"
|--查看所有标签: git tag
|--推送本地标签: git push origin <tagname>
|--推送全部未推送的标签: git push origin --tags
|--删除一个本地标签: git tag -d <tagname>
|--删除远程标签: git push origin :refs/tags/<tagname>