Git常用命令速查

https://www.liaoxuefeng.com/wiki/896043488029600 廖雪峰的git教程

https://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 阮一峰的git命令清单

一、安装

  • git --version:查看git版本
  • git config --global XXXX:全局配置

二、本地文件管理

  • 三个区域:工作区 —> 暂存区(stage) —> 版本库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ykP6HmV6-1665385735424)(https://www.liaoxuefeng.com/files/attachments/919020037470528/0)]

初始化一个本地仓库
  • mkdir XXX:创建XXX文件夹
  • git init:将该文件夹初始化为git仓库
    Initialized empty Git repository in /Users/michael/learngit/.git/
    
添加
  • git add <file>工作区 添加指定文件到 暂存区

    • git add .:添加所有文件
  • git commit -m <message>暂存区 提交至 版本库

查看修改状态
  • git status:查看当前项目修改状态
查看commit记录
  • git log:查看commit记录
    • git log -5 --pretty=oneline:精简到一行,且仅查看最近5条
查看命令记录
  • git reflog:查看每次的命令
(工作区)版本回退
  • git reset --hard <commitId>工作区 回退到 版本库 中某个版本(丢弃commit,丢弃工作区)

    • HEAD:当前版本的指针
    • git reset --hard HEAD^:回退到上一个版本
    • git reset --hard HEAD^^:回退到上上个版本
  • git reset --soft <commitId>工作区 回退到 该次commit之前的样子(丢弃commit,不丢弃工作区)

丢弃暂存区/工作区的修改
  • git reset HEAD <fileName>:将 暂存区 文件回退到 工作区 (unstage)

  • git checkout -- file:丢弃 工作区 的 “修改(改动/删除等操作)”

    • 回到最近一次add(在文件进入暂存区后修改)或commit(在文件未进入暂存区前修改)的状态
    • 丢弃当前工作区所有修改git checkout .
删除文件
  • git rm <fileName>:删除文件
    • 删除完后应重新commit
暂存工作区
  • git stash (push -m "save message"):暂存工作区内容(压栈)
  • git stash list:查看stash栈的记录
  • git stash pop:恢复暂存的内容到工作区,同时删除stash记录(弹栈),等价于
    • (1)git stash apply:恢复暂存的内容到工作区
    • (2)git stash drop:删除stash记录
    • git stash pop stash@{X}:取出并删除指定的stash
合并某次commit到当前分支
  • git cherry-pick <commit>:合并某次commit到当前分支
合并多次commit
  • 情景:在push到远程仓库之前,同一个需求多次进行commit(从dev分支拉出bugfix分支进行开发)
    • (1)首先用git log查看commit记录

      commit  XXX(id设为1004) //bugfix
      commit  XXX(id设为1003) //bugfix
      commit  XXX(id设为1002) //bugfix
      commit  XXX(id设为1001) //dev
      commit  XXX(id设为1000) //dev
      
    • (2)使用git rebase -i 1001指向最开始拉出bugfix分支的原分支dev的最后一次提交上(即1001,1002-1004为bugfix的commit),按下enter进入vi的编辑模式

      • i进入insert模式
      // 修改前
      pick 1002
      pick 1003
      pick 1004
      
      # Rebase 1001..1004 onto 1001
      # ...
      # ....
      
      
      
      //修改后
      pick 1002 
      squash 1003     // pick 的意思是要会执行这个 commit
      squash 1004     // squash 的意思是这个 commit 会被合并到前一个commit
      
      # Rebase 1001..1004 onto 1001
      # ...
      # ....
      
      • esc退出insert模式
      • 输入:wq保存并退出,随后进入commit message的编辑界面
      
      (删除这里原来所有信息,修改为合并后的新commit的commit message)
      
      # Please enter the commit message for your changes. ....
      
    • 再次输入git log查看(合并后的commit会形成一个新的commit)

      commit  XXX(id设为1005) //bugfix
      commit  XXX(id设为1001) //dev
      commit  XXX(id设为1000) //dev
      
      
    • tips:合并不相邻的commit:http://www.d2p.top/2019/12/23/git-rebase-i/

三、远程仓库

image

Tips:记得添加SSH key
  • git remote add origin XXXX:将当前本地仓库关联远程仓库

    • XXX 为远程仓库地址
    • git remote -v:查看远程库信息
  • git push origin branch-name:将 本地版本库 推送到 远程库 的某分支上

    • git push -u origin branch-name:第一次推送时使用 “-u” 参数关联本地当前分支与远程某分支
  • git clone XXX:克隆某个远程仓库到本地

  • git branch --set-upstream-to=origin/XXX YYY:将本地分支YYY与远程分支XXX关联

    • git remote -v:查看所链接的远程仓库
  • git pull:拉取远程仓库的最新commit(同时直接合并到工作区

    • git fetch:拉取远程仓库的最新commit到自己的版本库

四、分支管理

  • HEAD(当前版本)、master、dev均是指针
创建分支
  • git checkout -b <分支名>(从当前分支) 创建并切换到某分支,等价于

    • (1)git branch <分支名>:创建分支
    • (2)git checkout <分支名>git switch <分支名>:切换分支
  • git checkout -b 本地分支名x 远程仓库名/远程分支名x:拉取远程分支并创建本地分支

  • git switch -c <分支名>(从当前分支) 创建并切换到某分支

查看分支
  • git branch:查看当前所有分支
    • 当前分支前有 *
合并分支
  • git merge <分支名>:合并指定分支到当前分支

  • git merge --no-ff <分支名>:合并指定分支到当前分支(禁用Fast Forword)

    • Fast Forword在没有冲突的情况下可能会直接移动指针,而不会在merge的时候生成一个commit记录,导致丢失分支信息
  • git rebase <分支名>变基,使commit记录成为一条直线,更加清晰

删除分支
  • git branch -d <分支名>:删除某个分支
    • -D 强制删除某个还没有被合并过的分支
合并分支冲突
  • 情景:git merge <分支名> 后出现冲突

    • 冲突文件会通过<<<<<<<<======>>>>>>> 来标记不同版本
  • 处理:手动处理冲突后重新提交

    • eg:git commit -m "conflict fixed"
  • 检测是否有冲突: git diff --check

关联远程分支
  • git branch --set-upstream-to=origin/[remote-branch] [branch]:建立追踪关系,在现有分支与指定的远程分支之间
  • git push origin [branch]:[remote-branch]: 推送本地的feature-branch(冒号前面的)分支到远程origin的feature-branch(冒号后面的)分支(没有会自动创建)
  • 查询本地分支所关联的远程分支:git branch -vv

五、tag管理

  • git tag:查看已有tag
  • git tag -a X.X.X -m "tag描述":新建tag
  • git push origin X.X.X:推送tag到远程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值