美文网首页前端利器
git高级命令总结版

git高级命令总结版

作者: js_hcl | 来源:发表于2019-02-21 00:01 被阅读27次

    目录

    一、洞悉[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 [<file>|<path>] 可以简写 git add . 说明:.表示根目录(以下path都可以.)

    后悔药:

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

    补充:

    • 好习惯: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 <BranchName>
    • 删:$ git branch -d <BranchName>说明:-d即delete删除
    • 改:$ git branch -m <old_branchName> <new_branchName>说明:-m即modify修改
    • 查:git branchgit branch -agit branch -vv

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

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


    • 提交到远程仓库: git push
    • 完整命令:git push 主机名 本地分支:远程分支
    • 简化:git push需要设置默认的主机(远程分支默认和本地分支同名)
      $ git push --set-upstream|-u <remote> 本地分支:远程分支
    • 若不同名,要设置: 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 <remote_url>

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

    • 合并分支
    • 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 <stash_index>git stash drop删除栈顶
      全删:git stash clear
    • 应用:git stash [apply|pop] <stash_name>git stash [apply|pop] 应用栈顶那个
    • 查:$ git stash list

    1. 跳转到洞悉

    2. 跳转到工作顺序

    3. 跳转到常用命令总结

    相关文章

      网友评论

        本文标题:git高级命令总结版

        本文链接:https://www.haomeiwen.com/subject/ftskyqtx.html