美文网首页linux运维
工作中最常用的git命令

工作中最常用的git命令

作者: 聂云⻜ | 来源:发表于2019-11-27 23:52 被阅读0次

    本篇主要汇总工作中常用的一些git指令和面试问题,持续更新

    1. 初始化仓库
    git init
    
    1. 克隆一个项目代码
    git clone [url]
    
    1. 新建一个分支,并切换到该分支
    git checkout -b [branch]
    

    处理bug时可以先创建一个分支,然后add - commit - merge,最后删除该分支

    1. 查看当前分支
    git branch
    

    git branch命令会列出所有分支,当前分支前面会标一个*

      master
      system_test
    * yunfei
    
    1. 查看修改的文件
    git status 
    
    1. 添加当前目录的所有文件到暂存区
    git add .
    
    1. 提交暂存区到仓库区
     git commit -m [message]
    
    1. 推送前获取远程仓库更新,并与本地分支合并
    git pull [remote] [branch]
    
    1. 推送本地指定分支到远程仓库
    git push origin dbase_bugfix 就可以了
    
    # 推送分支并创建track
    git push --set-upstream origin dbase_bugfix
    
    1. 删除本地分支
    git branch -d [branch-name]
    
    # 强制删除
    git branch -D dev
    

    先切换到别的分支才能删除

    1. 删除远程分支
    git push origin --delete [branch-name]
    
    git branch -dr [remote/branch]
    
    1. 将文件存至暂存区
    # 保存到缓存区
    git stash save '本次暂存的标识名字'
    
    # 查看暂存区列表
    git stash list
    
    # 查看最近暂存区保存的内容
    git stash show
    git stash show stash@{index}
    
    # 删除暂存区指定记录
    git stash drop stash@{index}
    
    # 清空缓存区
    git stash clear
    
    1. 从草稿箱还原文件
    # 恢复最近暂存的内容
    git stash pop
    
    # 恢复指定草稿(pop会删除暂存区内容)
    git stash pop stash@{index} 
    git stash apply stash@{0} 
    
    1. 查看分支差异
    # --stat参数不显示具体差异代码
    git diff master yunfei [--stat]
    
    1. 删除不存在的远程跟踪分支并更新
    git fetch -p
    
    1. 合并代码
    git merge [branch]
    
    # 取消合并
    git merge --abort
    
    # 显示分支合并图
    git log --graph
    
    # 查看最近3次的提交和涉及的文件
    git log -3 --stat
    
    # 查看某次commit hashID的提交详情
    git show hashID
    
    1. 拆分A分支数据到B分支
    git checkout A
    git log (获取A分支提交的commitID)
    git checkout B
    git cherry-pick commitID
    git cherry-pick commit1..commit100 (可进行连续拆分)
    
    1. 修改默认配置
    # 设置大小写敏感
    git config core.ignorecase false 
    
    # 设置默认用户名
    git config --global user.name "YOUR NAME"
    
    # 设置默认邮箱
    git config --global user.email "YOUR EMAIL ADDRESS"
    

    全局配置保存在:$Home/.gitconfig
    本地仓库配置保存在:.git/config

    1. 追溯指定文件的提交历史
     git blame composer.json
    
    1. 撤销提交(--hard为强制提交,可以不加)
    git reset --hard HEAD
    
    # 后退一步
    git reset --hard HEAD^
    
    # 后退N步
    git reset --hard HEAD~2
    
    # 撤销指定记录提交
    git log
    git reset --hard commit_id (哈希索引值)
    
    # 撤销指定文件提交
    git reset HEAD README.MD (指定文件名)
    
    git reflog (查看非明细)
    git reset HEAD@{1}  (注意数字1是需要撤销到的版本)
    

    英文状态下按q退出git log

    1. 忽略提交文件

    根目录创建一个名为 .gitignore 的文件,并提交到git

    # 此为注释 – 将被 Git 忽略
    *.a       # 忽略所有 .a 结尾的文件
    !lib.a    # 但 lib.a 除外
    /TODO     # 仅仅忽略项目根目录下的TODO文件,不包括 subdir/TODO
    build/    # 忽略 build/ 目录下的所有文件
    doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
    
    1. 忽略指定文件(丢弃工作区的修改)
    git checkout -- application/api/controller/v1/stock/Tools.php
    

    用于版本库里的版本替换工作区的版本,无论工作区是修改还是删除

    1. 删除文件
    git rm README.MD
    git commit -m "remove README.MD"
    
    1. 常见问题
    atal: It seems that there is already a rebase-apply directory, and
    I wonder if you are in the middle of another rebase.  If that is the
    case, please try
        git rebase (--continue | --abort | --skip)
    If that is not the case, please
        rm -fr ".git/rebase-apply"
    and run me again.  I am stopping in case you still have something
    valuable there.
    

    解决:

    git status
    git rebase --abort
    

    相关文章

      网友评论

        本文标题:工作中最常用的git命令

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