git基础(9)-Git常用命令清单

日常工作中,如果能遵循工作流程,提交代码仔细、规范,其实仅需要 6 个常用的 Git 命令。如图:

Git

新建代码库

  • git init,在当前目录新建一个 Git 代码库
  • git init [project-name],新建一个目录,并将其初始化为 Git 代码库
  • git clone [url],克隆一个远程代码库

配置

Git 的配置文件.gitconfig,在用户主目录下(全局配置 –global),在项目目录下(项目配置 –local),在安装目录下(系统配置 –system)

  • git config --list,显示当前 Git 配置
  • git config -e [--global],编辑 Git 配置文件
  • git config [--global] user.name "[name]",设置用户信息

增加/删除文件到暂存区

  • git add [file1] [file2] ...,添加指定文件到暂存区
  • git add .,添加当前目录的所有文件到暂存区
  • git rm [file1] [file2] ...,删除工作区文件,并将这次删除放入暂存区
  • git rm --cached [file],停止追踪指定文件,但该文件会保留在工作区
  • git mv [rile-original] [file-renamed],改名文件,并将这个改名放入暂存区

代码提交

  • git commit -m [message],提交暂存区到本地仓库
  • git commit [file2] [file2] ... -m [message],提交暂存区指定文件到本地仓库
  • git commit -a,提交工作区自上次 commit 之后的变化,直接到本地仓库
  • git commit -v,提交时显示 diff 信息
  • git commit --amend -m [message],使用一次新的 commit,替代上一次提交

分支

  • git branch, 列出所有本地分支
  • git branch -r, 列出所有远程分支
  • git branch -a,列出所有本地和远程分支
  • git branch [branch-name],新建一个分支,但依然停留在当前分支
  • git checkout [commit] -b [branch-name],从提交历史检查一个新的分支,相当于恢复误删的分支
  • git checkout -b [branch-name],新建一个分支,并切换到该分支
  • git branch [branch] [commit],新建一个分支,指向指定的 commit
  • git branch --track [branch] [remote-branch],建立一个新分支,与指定的远程分支建立追踪关系
  • git branch --set-upstream-to [origin/branch],修改追踪仓库,在现有分支与指定的远程分支建立追踪关系
  • git chekout [branch],切换到指定分支,并更新工作区
  • git merge [branch],合并指定分支到当前分支
  • git cherry-pick [commit],选择一个 commit,合并进当前分支
  • git branch -d [branch-name],删除本地分支
  • git push origin --delete [branch-name],删除指定远端分支
    1
    2
    3
    $ git push GitTest --delete branches
    To https://github.com/Better-Jiang/GitTest.git
    - [deleted] branches

标签

  • git tag,列出所有标签

  • git tag -a [tag] -m [message],新建一个 附注类型的 tag,在当前 commit

  • git tag [tag] [commit],新建一个 tag,在指定 commit

  • git tag -d [tag],删除指定 tag

  • git show [tag],查看 tag 信息

  • git push [remote] [tag], 推送指定 tag

  • git push [remote] --tags,推送所有 tag

  • git push [remote] :refs/tags/[tag],远端删除指定 tag

    1
    2
    3
    4
    5
    6
    $ git push GitTest :refs/tags/v1.1

    remote: warning: Deleting a non-existent ref.
    To https://github.com/Better-Jiang/GitTest.git
    - [deleted] v1.1

查看信息

  • git status,显示文件状态,是否有变更文件
  • git log,当前分支的版本历史
  • git log --stat,显示 commit 历史,以及每次 commit 发生变更的文件
  • git log --follow [file],git whatchanged [file]显示某个文件的版本历史,包括文件改名
  • git log -p [file],显示指定文件相关的每一次 diff
  • git blame [file],显示指定文件什么人,在什么时间修改过
  • git diff,显示暂存区和工作区的差异
  • git diff --cached,暂存区和上一个 commit 的差异
  • git diff HEAD,暂存区和当前分支最新 commit 之间的差异
  • git diff [commit] [commit],两次提交之间的差异
  • git show [commit], 显示某次提交的元数据和内容变化
  • git show --name-only [commit],显示某次提交发生变化的文件
  • git show [commit]:[filename],显示某次提交时,某个文件的内容
  • git reflog,显示当前分支的最仅几次提交

远程同步

  • git fetch [remote],下载远程仓库的所有变动
  • git remote -v,显示所有远程仓库
  • git remote show [remote],显示某个远程仓库的信息
  • git remote add [shortname] [url],增加一个新的远程仓库,并命名
  • git pull <y远程主机名> <远程分支名>:<本地分支名>,git pull origin master:testing,将远程主机 origin 的 master 分支拉取过来,与本地的 testing 分支合并。冒号:省略,表示与当前分支进行合并。
  • git pull [remote] [branch],取回远程仓库的变化,并于当前本地分支合并
  • git push <远程主机名> <本地分支名>:<远程分支名>,将本地分支上传到远程分支。
  • git push [remote] [local-branch],上传本地指定分支,到远程仓库的同名分支,如果没有则创建新分支
  • git push [remote]: refs/for/master,如果省略了本地分支,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。等同于git push [remote] --delete [branch]
  • refs/for,表示我们提交到服务器之后需要经过 code review 之后才能进行 merge
  • 如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,git push origin,将当前分支推送到 origin 主机的对应分支
  • git push [remote] --force,强行推送当前分支到远程仓库,即使有冲突
  • git push,如果当前分支只有一个远程分支,则可以省略主机名。

撤销

  • git checkout [file],恢复暂存区的指定文件到工作区
  • git checkout [commit] [file],恢复某个指定 commit 的指定文件到工作区
  • git checkout .,恢复上一个 commit 的所有文件到工作区
  • git reset [file],重置暂存区的指定文件,与上一次 commit 保持一致,但工作区不变
  • git reset --hard,重置暂存区与工作区内容,与上一次 commit 保持一致
  • git reset [commit],重置当前分支指针为指定 commit,同时重置暂存区,但工作区保持不变
  • git revert [commit],新建一个 commit,撤销指定 commit 的所有变化,并应用到当前分支

其他

  • git archive,生成一个可供发布的压缩包
  • git stash,备份当前工作区的内容
  • git stash pop,从 Git 栈中,读取最近一次保存的内容,恢复工作区相关内容
  • git stash list,显示 Git 栈内所有备份
  • git stash clear,清空 Git 栈