git高级命令总结版

  • 查看另一文章【git基础教程】

目录

  • 洞悉
  • 工作顺序
  • git命令总结

一、洞悉[1]

本地分支与远程仓库联系关系总结

  • 查看默认追踪:
  1. git config --list拉到底下会看到所有远程仓库所有默认追踪【有则显示】
  2. git status 工作区干净情况下,底下可以看到当前分支的默认追踪【有则显示】
  3. git branch -vv 所有本地分支所有默认追踪【有则显示】所有分支提交的信息
  • 绑定及修改默认追踪(特别是对于多个远程仓库)
  1. 绑定: push时,绑定:git push -u 主机名 本地分支:远程分支
    【优点】远程仓库可以不存在时也可以操作
    【缺点】会附带push
    【总结】绑定
  2. 修改: git branch --set-upstream-to=主机名/远程分支 本地分支
    【优点】没有副作用
    【缺点】必须要有该远程分支(因为只有push能修改远程分支)
    【总结】修改(特别适合多仓库时,切换追踪查看情况)

--set-upstream-to在pull时,如果没有默认追踪,则会提示这个命令

  • 查看所有分支:及同步远程分支
  1. git branch -vv 所有本地分支所有默认追踪【有则显示】
  2. git branch -a 所有本地分支所有远程仓库及分支

同步远程分支---说明

  • git branch只能知道远程最后一次更新下来后的远程分支(pull/fetch或clone)及自己后续对远程分支的操作。但其它同事的远程分支操作并没有更新到下来
  • 可能同事A删除了远程某个分支,则会和自己本地显示的远程分支不同步

解决方法

  1. git pull/fetch
    【优点】拉取的时候会自动更新该远程仓库的分支
    【缺点】不及时,且拉取的只是该远程仓库的的分支
    【总结】自动同步
  2. git remote update
    【优点】会更新所有远程仓库的分支
    【缺点】和原来本地保留的远程分支或操作。即:只会添加,不会去掉远程不存在的远程分支。查看文章
    【总结】手动同步,且要保留之前的远程分支
  3. git remote update -p|--prune 主机名
    【优点】 和原来本地保留的远程分支并操作。即和远程完全一样,会剔除掉不存在的远程分支。
    【缺点】只会更新该远程仓库的分支
    【相同命令】git remote prune 主机名查看文章
    【总结】手动同步,且要和远程仓库保持一致
  • 查看所有远程仓库:
  1. git remote -vv 所有远程仓库
  2. git remote show 主机名 一个个主机查看,可以查看远程仓库及分支,及该仓库对应本地的所有默认追踪【有则显示】

二、工作顺序[2]

  • 【正确的工作顺序】
    【总结】 工作前git pullpush前git pull
    【总结】多用git status
    【总结】多用git diff
  1. 工作前git pull。同事A,先git pull 主机名 远程分支:本地分支 或简写
  2. git status。因为:
  • 如果工作区干净,git pull则会直接更新到工作区
  • 如果工作区进行了操作,则会更新到暂存区,此时git status会发现和暂存区不一样。并且会提示你是丢弃工作区还是保留。
    若保留:直到你git commit ,后会自动进入merge解决冲突操作。最后push即可
  1. 开始工作
  2. push前,再git pull,若有冲突,解决冲突,再push
  3. 同事B工作前,也是以上步骤

说明

  1. pull可能会有冲突:若工作区不干净,git commit后自动进入
  2. push可能会有冲突:若有冲突,自动进入

三、常用命令总结[3]

  • 初始化仓库:git init

  • 增删改查配置:git config

基本格式:git config [--local|--global|--system]

  • 增:--add section.key value
  • 删:--unset {key}--unset {key} value--unset-all {key}
  • 改:section.key value
  • 查:{key}--get-all {key}--list
  • 编辑:--edit

  • 提交到暂存区:git add [|] 可以简写 git add . 说明:.表示根目录(以下path都可以.)

后悔药:

  • git rm --cached []撤销追踪
  • git checkout -- [|]从暂存区重置到工作区(工作区撤销修改
  • git reset HEAD [|]从版本库重置到暂存区(暂存区撤销修改)

补充:

  • 好习惯:add前,查看工作区和暂存区的区别git diff
  • 好习惯:每次操作后,git status查看git状态

  • 提交到版本库:git commit -m '这次提交的说明'

后悔药:

  • git reset --hard HEAD^ 版本回退
    对比暂存区及工作区的重置:因为版本库有多个版本,所以可以选择重置到哪个版本

说明:提交到远程仓库前,都有后悔药(远程仓库版本个人没权限修改)

补充:

  • 好习惯:commit前,查看暂存区和版本库的区别git diff --cached

  • 查看提交历史:$ git log (版本库中往前查:已删除的或往后的查不到)

相关操作:

  • $ git reflog 查看提交日志(本地提交记录查:这台电脑所有的提交)

  • 增删改查本地分支:git branch
  • 增:$ git branch
  • 删:$ git branch -d 说明:-d即delete删除
  • 改:$ git branch -m 说明:-m即modify修改
  • 查:git branchgit branch -agit branch -vv

  • git diff 比较差异:
  • 工作区和暂存区比较:git diff
  • 暂存区和版本库比较:git diff --cached
  • 版本库和远程仓库比较:git diff 本地分支 /远程分支
  • 分支比较:git diff 分支1 分支2

把结果输出到指定文件:后面加 >>文件名.diff


  • 提交到远程仓库: git push
  • 完整命令:git push 主机名 本地分支:远程分支
  • 简化:git push需要设置默认的主机(远程分支默认和本地分支同名)
    $ git push --set-upstream|-u 本地分支:远程分支
  • 若不同名,要设置: git config --global push.default upstream

通过以上命令可以发现:git push也可以修改远程分支

  • 增:git push 主机名 本地分支:远程分支
  • 删:git push 主机名 :远程分支
  • 改:先删,在增
  • 查:同branch命令:git branch -agit branch -vv

  • 拉取更新 git pullgit fetch

完整命令:
$ git pull 主机名 <远程分支名>:<本地分支名>
$ git fetch 主机名 <远程分支名>:<本地分支名>


区别:git pullgit fetch的区别
查看文章


  • 克隆项目 git clone

  • 仓库命令 $ git remote
  • 增:git remote add [shortname] [url]
  • 删:git remote remove
  • 改名字:git remote rename
    改网址: git remote set-url ]
    改网址(增):git remote set-url --add ]可以push多个仓库
  • 查:git remotegit remote -vgit remote show 主机名
  • 更新远程分支:git remote updategit remote update -p|--prune git prune

  • 合并分支
  • Fast-forward(ff)模式: git merge -ff other_branch
    简写 git merge other_branch
  • --no-ff模式:git merge --no-ff -m '提交信息' other_branch

  • 本地缓存:将工作区和暂存区缓存起来。并使其重置为上次提交后的状态
  • 增:git stash push -m '这次缓存的信息'
  • 删:c drop git stash drop删除栈顶
    全删:git stash clear
  • 应用:git stash [apply|pop] git stash [apply|pop] 应用栈顶那个
  • 查:$ git stash list

  1. 跳转到洞悉 ↩

  2. 跳转到工作顺序 ↩

  3. 跳转到常用命令总结 ↩

你可能感兴趣的:(git高级命令总结版)