Git命令[速查]

工作中用到git时,很多命令经常需要网上查找,浪费了大量时间。因此,决定写本文来收录常用的git命令,方便工作速查,并会不但更新完善。

配置系列

  1. git config 工具专门用来配置git相应的工作环境变量,这些环境变量决定了git在各个环节的工作方式和行为。
    • git config --list可以查看已有配置信息
    • 配置用户名和邮箱:
      git config --global user.name "someone"
      git config --global user.email "someone@company.com"
      
    • git config --system 修改配置文件[/etc/gitconfig]
    • git config --global 修改配置文件[~/.gitconfig]
    • 配置优先级: [工作目录中的 .git/config] > [~/.gitconfig] > [/etc/gitconfig]
  2. 配置sshgit可以通过httpsssh两种协议与远程仓库进行通讯。配置ssh的基本思路是:本地生产ssh密钥对--->在仓库端添加本地生产的public key
    • 本地生产ssh密钥对: ssh-keygen -t rsa
    • ~/.ssh/id_rsa.pub即为public key

基本操作

  1. git add将工作区的文件添加到暂存区
  2. git restore撤销git追踪过的文件的修改
    • git restore --worktree/-W some_file 撤销文件在工作区的修改
    • git restore --staged/-S some_file撤销文件在暂存区的修改,将状态恢复到add之前
    • git restore -s commit_id some_file将当前工作区切换到某一次commit
  3. git clean从工作目录中删除所有git没有追踪过的文件
    • git clean -n演习,列出那些文件将被删除
    • git clean -df删除当前目前下未被``git```追踪过的文件和文件夹
  4. git reset [--soft | --mixed | --hard] commit_id回退版本,--mixed为默认选项
    • git reset --hard commit_id将仓库、暂存区和工作区均回退到某个版本
  5. git checkout实现git restoregit switch的功能
    • git checkout some_branch/git switch some_branch切换分支
    • git checkout -b new_branch/git switch -c new_branch创建并切换分支
  6. git commit提交
  7. git push推送分支
    • git push推送到关联的远程分支
    • git push origin some_local_branch:some_remote_branch推送到远程分支
    • git push origin :some_remote_branch删除远程分支
    • git push origin --delete some_remote_branch删除远程分支
  8. git fetch从远程仓库更新本地仓库
  9. git rebase变基
    • git rebase some_branchsome_branch为基础执行变基
    • git add解决rebase冲突
    • git rebase --abort终止变基
    • git rebase --continue继续变基
  10. git merge分支合并
    • git add+git commit解决merge冲突
  11. git pull等同于git fetch+git merge
  12. git revert撤销某次操作,并将撤销操作作为新的提交
  13. git cherry-pick挑选commit进行合并
    • git cherry-pick commit-id挑选commit_id进行合并
    • git add解决cherry-pick冲突
    • git cherry-pick --continue继续合并
    • git cherry-pick --abort放弃合并
  14. git swich切换分支
    • git switch some_branch切换分支
    • git switch -c new_branch创建并切换分支
  15. git log --oneline单行显示提交记录
  16. git status查看git工程当前状态
  17. git diff
    • git diff commit_id查看commit_id的修改
    • git diff commit_id1 commit_id2查看两次提交之间的差异
    • git diff --cached/--staged查看暂存区和仓库之间的差异
    • git diff branch1 branch2查看两分支之间的差异
  18. git remote remove origin 移除源origin
  19. git remote add origin https://*.git 增加源origin

分支管理

  1. 通过远程分支创建本地分支:git checkout -b some_local_branch origin/some_remote_branch
  2. 通过当前分支创建分支:git checkout -b some_branch
  3. 切换分支:git checkout some_branch
  4. 合并分支:git merge some_branch
  5. 变基分支:git rebase some_branch
  6. 删除分支:git branch -d some_branch
  7. 查看分支:git branch
  8. 将本地分支与远程分支关联:git branch --set-upstream-to=origin/some_remote_branch some_local_branch
  9. 推送分支:git push origin some_local_branch:some_remote_branch
  10. 强推分支:git push -f

冲突解决

  1. git merge冲突解决:git add + git commit
  2. git rebase冲突解决:git add + git rebase --continue
  3. git cherry-pick冲突解决:git add + git cherry-pick --continue

修改commit历史

  1. 修改当前commit的内容和message
    • git commit --amend将暂存区的内容合并到上一次提交,并可以修改message
  2. 修改历史commit:

文件权限

  1. 查看文件权限:git ls-files --stage some_file
  2. 修改文件权限:git update-index --chmod=+x some_file

子模块

  1. 增加子模块:git submodule add submodule_url
  2. 获取子模块:
    • 方式一:git clone mainmodule_url --recurse-submodules
    • 方式二:在主项目中执行git submodule init+git submodule update
    • 方式三:在主项目中执行git submodule update --init --recursive
  3. 更新子模块到commit_id
    • 进入子模块并更新:git fetch & git rebase & git reset --hard commit_id
    • 推到主模块并提交:git push
  4. 查看子模块:git submodule
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容