Git 常用命令

设置

  • 设置全局用户名:git config --global user.name <your-user-name>
  • 设置全局邮箱:git config --global user.email <your-email>
  • 查看全局设置:git config --global --list
  • 设置项目用户名:git config user.name <your-user-name>
  • 设置项目邮箱:git config user.email <your-email>
  • 查看项目设置:git config --list

基本操作

  • 查看Git状态:git status
  • 查看远程仓库地址:git remote -v
  • 查看日志:git log
  • 查看常用帮助:git help
  • 查看全部帮助:git help -a
  • 查看某个命令帮助:git help <command-name>
  • 查看版本:git --version
  • 初始化:git init
  • 关联远程仓库:git remote add origin <git-url>
  • 克隆项目到本地:git clone <git-url>
  • 更新:git pull
  • 把master的更新merge到dev分支:git checkout dev; git merge master
  • 添加某个文件到版本控制中:git add [dir-name/]<file-name>
  • 添加某个文件夹到版本控制中:git add <dir-name>
  • 添加所有文件到版本控制中:git add .
  • 从版本控制中删除某个文件:git rm [dir-name/]<file-name>
  • 提交修改:git commit -m "<your-commit-note>"
  • 推送到远程仓库:git push [origin master]
  • 创建本地分支:git checkout -b [new branch name]
  • 推送本地分支到远程分支:git push origin localBranchName:remoteBranchName
  • 删除本地分支:git branch -D [local branch name]
  • 删除远程分支:git push origin :[remote branch name] (origin后面有空格)
  • fork后同步源更新内容:
    1. 查看远程状态:git remote -v
    2. 确定一个将被同步给fork库的远程上游仓库:git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
    3. 再次查看远程状态:git remote -v
    4. 从上游仓库 fetch 分支和提交点,提交给本地 master,并会被存储在一个本地分支 upstream/master :git fetch upstream
    5. 切换到本地主分支(如果不在的话):git checkout master
    6. 把 upstream/master 分支合并到本地 master 上,这样就完成了同步,并且不会丢掉本地修改的内容:git merge upstream/master
    7. 如果想更新到 GitHub 的 fork 上,直接:git push origin master

检查

工作目录:git clone 后获得的一份本地的代码,也包括新编辑的,尚未加入版本控制的代码;
暂存区域:git add 后暂存起来,尚未 git commit 的代码;
本地仓库:git commit 后正式被版本控制记录起来的代码;

  • 查看工作目录和暂存区域区别:git diff
  • 查看暂存区域和本地仓库区别:git diff --staged git diff --cached

取消修改

  • 取消尚未add的修改:git checkout -- <file-name>
  • 取消已经add到未commit的修改:git reset HEAD <file-name>
  • 覆盖上次提交,用于已commit:git commit --amend
  • 撤销远程commit(回滚到某次commit): git log; git reset [--hard] <commit-id>; git push --force
  • 撤销最近一次本地commit:git reset HEAD~1
  • 恢复删除的文件:
    • git log --diff-filter=D --summary 查看所有删除的文件;
    • git checkout $commit~1 filename 恢复文件,其中$commit是上面获取到的commitId;

参考文档