Git 常用基本命令详解

从网站上收集一些基本常用的git命令,作为参考。在加上一些用用链接,作为学习的资料。以便在有些网络资源链接失效后,至少我这里还有个可以检索的备份。

配置

  • 命令: git config,参数–global表示你这台机器上所有的Git仓库都会使用这个配置
    1. git config –global user.name “Your Name”
    2. git config –global user.email “email@example.com”
    3. git config –global alias.co checkout #设置别名,如checkout别名为co

版本库

  • 初始化: git init,分布式版本控制系统中每个人的电脑就是一个完整的版本库,初始化后,就意味着这个目录变成Git可以管理的仓库了
  • 远程仓库:如果你需要和其他人交换你的修改,最好需要一个远程仓库(以GitHub为例)
    • 创建SSH Key:ssh-keygen -t rsa -C "youremail@example.com"

      操作:一路回车,会在用户主目录生成.ssh目录,其中id_rsa是私钥,不能泄露,id_rsa.pub是公钥,可以对外使用,打开Account settings,SSH Keys页面,然后,点Add SSH Key,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容,点Add Key 说明:你的本地仓库需要一个给远程仓库辨识的标志,id_rsa.pub就是这样一个唯一标识,当你提交时,GitHub便知道了这是谁的提交

    • 添加远程仓库:git remote add origin git@github.com:daihanqiao/daihanqiao.github.io.git

      说明:如果你先在本地有了一个仓库,你要同步本地仓库和GitHub上的远程仓库,除了需要将你本地仓库的标识告诉远程仓库,还需要在本地仓库添加远程仓库的SSH URL(注意将origin后的路径设置成你GitHub上的仓库SSH URL)

    • 从远程仓库克隆:git clone git@github.com:daihanqiao/daihanqiao.github.io.git

      说明:如果已有一个远程仓库,你可以将远程仓库内容拷贝到本地仓库

状态查看

  • 查看提交日志:git log,可添加--pretty=oneline参数,只显示版本号和提交信息
  • 查看命令历史:git reflog,会显示操作命令及对应的版本号
  • 仓库当前的状态:git status
  • 查看分支:git branch
  • 查看分支合并图:git log --graph
  • 查看“储藏”的工作现场:git stash list
  • 查看远程仓库名称:git remote
  • 查看远程仓库信息:git remote -v(抓取和推送地址)
  • 查看标签信息:git show

文件比较

  • 工作区和缓存区比较:git diff (<path>),不传path则比较所有文件
  • 缓存区和版本库比较:git diff --cached (<path>),git diff --staged (<path>)
  • 工作区和版本库比较:git diff HEAD,git diff HEAD^,git diff commit_id(HEAD为当前版本,HEAD^为上一版本,HEAD^^上上一个版本,HEAD~100上100个版本,commit_id为版本号,以下命令不做特殊说明,commit_id均可用HEAD,HEAD^,HEAD~n代替)
  • 版本库中两个不同版本的比较:git diff commit_id1 commit_id2

文件提交

  • 工作区提交到缓存区: git add <path>,可以是文件也可以是目录,git add .表示add当前目录
  • 缓存区提交到版本库:git commit -m "commit msg"
  • 版本库推送到远程库:git push -u origin master,第一次push加上-u参数,将本地master分支内容推送到远程库新的master分支,并将二者关联,以后的推送可以简化为git push

文件抓取

git pull

文件修改

  • 撤销缓存区的修改:git reset HEAD file
  • 工作区回退到某一版本:git reset --hard commit_id
  • 撤销工作区修改(未提交至缓存区):git checkout -- file
  • 撤销工作区修改(已提交至缓存区):git reset HEAD file+git checkout -- file
  • 文件从版本库删除:git rm file|git add file+git commit -m "commit msg"
  • 版本库误删的文件恢复到最新版本:git checkout -- file

分支管理

  • 应用场景:开发某个功能模块,或测试定位修复某个BUG时,可以在自己的分支上开发,正常提交至版本库而不影响大家都在使用的分支,开发完成后合并到开发分支
  • 创建并切换分支:git checkout -b dev(相当于git branch dev+git checkout dev)
  • 合并分支:git merge dev,合并dev分支到当前分支
  • 删除分支:git branch -d dev
  • 两个分支都修改了同一文件,合并时会发生冲突,需要手动解决冲突后再提交
  • “储藏”工作现场:git stash,当正在dev分支修改文件时,需要紧急修复某个bug,可以“储藏”当前开发进度,使用后git status查看工作区,就是干净的,可以创建bug分支修复,修复完成合并提交后,git stash apply(恢复)+git stash drop(删除)或git stash pop(恢复并删除)

标签管理

  • 应用场景:发布版本时,给所发布的版本加标签,以后可以方便的取出该版本
  • 创建标签:git tag <name> (commit_id) (-m "tag_msg)",不传commit_id时默认打到最近一次commit,-m参数可以传当前tag说明文字
  • 推送标签到远程仓库:git push origin <tagname>(tagname),git push origin --tags(全部tag)
  • 删除本地标签:git tag -d <tagname>
  • 删除远程仓库标签:git tag -d <tagname>+git push origin :refs/tags/<tagname>
  • 切换到标签:git checkout <tagname>

忽略特殊文件

  • .gitignore:window下可以通过命令新建该文件,将需要忽略的文件写入.gitignore即可,例如:public/忽略publick目录,.gitignore忽略.gitignore文件,*.class忽略所有class类型文件

Git Documentation