git操作指令

|--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>

posted @ 2017-04-28 23:00  Traveling_light  阅读(158)  评论(0编辑  收藏  举报