git命令简洁

  • 生成SSH Key

    ssh-keygen -t rsa -C "youremail@xxx.com"
    // 输入之后直接两次回车即可
  • 查看 git 用户名和邮箱地址

    // 查看用户名
    git config user.name
    // 查看邮箱地址
    git config user.email
    // 查看配置信息
    git config --list
    
    // git config --global   当前用户全局
    // git config --system   当前系统全局
    // 修改用户名
    git config --global user.name "username"
    // 修改邮箱地址
    git config --global user.email "email"
    // git config --list 或者 git config -l 查看 git 配置信息
  • 初始化一个 git 仓库

    git init
  • 添加文件到 git 仓库

    1. 添加文件到缓存区
      git add <filename>
      // 比如添加 file.txt 文件: git add file.txt
    2. 将缓存区文件提交到本地仓库
      git commit -m "add_file_message"
      // 比如提交 file.txt 文件:git commit -m "add file.txt"
  • 查看修改内容对比,提交到缓存区或者已经提交到本地仓库,使用 git diff 会没有内容显示,也就是说只要修改了,在提交到缓存区之前使用 git diff 才有用 (查看工作区的改变)

    git diff
    
    // 还可以查看具体哪个文件做了什么修改
    // 比如查看 readme.txt 做了什么修改
    git diff HEAD -- readme.txt
  • 查看当前仓库状态,任何时候都可以使用

    git status
  • 查看提交日志

    // 查看全部 
    git log
    
    // 查看最后一次提交
    git show
    
    // 查看倒数5条
    git  log -5
    
    // 简化日志显示方式,并含有提交版本号
    git log --pretty=oneline
    
    比如:
    $ git log --pretty=oneline
    44c9beb4c58543b89181829755be2c5e9781ba28 (HEAD -> master) append GPL
    03112bdf101655c30df9b61e4bd325b2cbe3c090 add distributed
    8a1386bd0fe677bca99d5a4ef26e87772a3eca71 wrote a readme file
  • 回退版本

    // 回退当前版本的上一个版本
    git reset --hard HEAD^
    
    // 回退当前版本的上三个版本
    git reset --hard HEAD^^^
    
    // 回退当前版本的上100个版本
    git reset --hard HEAD~100
    
    // 回退指定版本,并将 「回退」动作作为一个版本提交
    git revert <commit id>
    
  • 回退指定版本(多半是因为回退版本回退多了)

    git reset --hard 版本号前几位
    
    // 比如回退到 以上查看日志中的 add distributed 这个提交版本
    git reset --hard 44c9beb4c
  • 查看提交版本号 commit id

    // 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
    git reflog
  • 撤销修改

    1. 修改只在工作区,还没有添加到缓存区 (还没有 git add)
      git checkout -- filename
      // 比如 readme.txt 文件只是在工作区修改了,想回退到修改之前的提交的版本
      git checkout -- readme.txt
    2. 修改从工作区已经提交到了缓存区 (已经 git add)
      
      // 将缓存区的修改回退到工作区
      git reset HEAD filename

    // 比如 readme.txt 文件的修改已经提交到缓存区了,但是想撤销修改分为两步 01.将缓存区的修改回退到工作区 git reset HEAD readme.txt 02.将在工作区的修改回退到和上一个版本一样 git checkout -- readme.txt

    3. ##### 修改已经从缓存区提交到了本地仓库 (已经 git commit)

    // 回退当前版本的上一个版本 git reset --hard HEAD^

    4. ##### 将在暂存区的更改文件进行强制撤销。(想让之前已经提交到缓存区的文件覆盖工作区的文件)

    git checkout -f

    5. ##### 命令 git clean 作用是清理项目,-f 是强制清理文件的设置,-d 选项命令连文件夹一并清除

    git clean -f -d

  1. 假如你想要丢弃你所有的本地改动与提交,可以到服务器上获取最新的版本并将你本地主分支指向到它:
    git fetch origin 
    
    git reset --hard origin/master
  • 删除文件

    1. 确实要删除该文件
      
      // 比如以 test.txt 为例子

    // 01 本地手动删除 test.txt 文件 rm test.txt 或者 rm -rf test.txt // 02 添加被删除的状态缓存区 git rm test.txt 或者 git add test.txt // 03 提交状态到本地仓库 git commit -m "remove test.txt"

    2. ##### 工作区误删了文件

    // 01 工作区误删了 test.txt 文件 rm test.txt // 02 找回被误删的文件(撤销修改) git checkout -- test.txt // 用版本库中的版本替换掉工作区的版本

  • 创建分支并切换到该分支

    git checkout -b alex  或者 git switch -c alex
    
    //创建 alex 分支并切换到 alex 分支
    //等同于以下两个命令 
    git branch alex // 创建 alex 分支
    git checkout alex  或者 git switch alex  // 切换到 alex 分支
  • 合并指定分支到当前分支

    // 比如当前位于 master 分支,欲将 alex 分支合并到 master 分支
    git merge alex
    // 如果有冲突,解决步骤如下:
    01 先查看冲突文件
    git status
    02 手动解决冲突文件
    03 再次合并分支
    git merge alex
    04 添加修改到缓存区
    git add .
    05 提交到本地仓库
    git commit -m "merge fixed"
  • 查看分支的合并情况

     git log --graph --pretty=oneline --abbrev-commit
     或者直接使用 git log --graph 命令可以看到分支合并图。
    
     // 设置别名查看所有的提交记录
     git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
  • 删除分支

     // 合并代码之后删除分支 
     git branch -d 分支名
     // 没有合并代码删除分支 
     git branch -D 分支名
     // 删除远程分支(本地分支需要再次手动删除)
     git push origin -d 分支名
    
     // 比如删除 alex 分支
     git branch -d alex
     // 删除远程 alex 分支
     git push origin -d alex
    • 查看分支

      // 只查看远程分支
      git branch -r
      // 只查看本地分支
      git branch
      // 查看所有远程分支和本地分支
      git branch -a
  • 拉取远程分支并创建同名本地分支

    // 方法一(此方法建立的本地分支和远程分支会有映射关系)
    git checkout -b [本地分支名] origin/[远程分支名]
    举例:git checkout -b alex origin/alex
    
    // 方法二(此方法建立的本地分支和远程分支没有映射关系)
    git fetch origin [远程分支名]:[本地分支名]
    举例:git fetch origin alex:alex
  • 查看本地分支和远程分支的映射关系(远程有的分支而本地没有的分支不会出现)

    git branch -vv
  • 手动建立本地分支和远程分支的映射关系

    git branch -u origin/[分支名]
    或者
    git branch --set-upstream-to origin/[分支名]
    或者
    git branch --set-upstream-to=origin/[远程分支名] [本地分支名]
  • 推送分支

    git push -u origin <branch name> 
    // 第一次推送的时候添加 -u 参数,给本地分支和远程分支创建连接关系,当第二次再次推送时,则不需要添加 -u 参数
    
    比如:推送 dev 分支
    git push origin dev
    • 查看远程库的信息

      
      git remote

    // 查看远程库更加详细的信息 // 这里可以看到抓取和推送的 origin 的地址 git remote -v (小写的v)

    // 删除远程库连接 git remote rm <origin name>

    // eg:删除远程 origin 连接 git remote rm origin

    // 添加远程库连接 git remote add <origin name> <ssh or http>

    // eg: 关联本人 GitHub 连接,并连接名为 myGitHub git remote add myGitHub git@github.com:Alex66668888/demo.git

  • git add 三种状态命令比较

命令 说明
git add . 提交所有修改的和新建的数据暂存区 (提交当前文件夹下所有修改)
git add -u 提交所有被删除和修改的文件到数据暂存区(等同于git add -update)
git add -A 提交所有被删除、被替换、被修改和新增的文件到数据暂存区(等同于git add –all)