Git 基础教程

一般来说,日常使用只要记住下图 6 个命令,就可以了。

几个专用名词的译名如下。

  • Workspace:工作区
  • Index / Stage:暂存区
  • Repository:仓库区(或本地仓库)
  • Remote:远程仓库

命令速查表


新建代码库

git init // 在当前目录新建一个 git 代码库

git clone [url] // 克隆一个已存在的项目

修改和提交

git status //查看变更的文件

git add [file1] ... // 添加指定文件到暂存区

git add . // 添加当前目录的所有文件到暂存区

git rm [file1] [file2] ... //删除工作区文件,并且将这次删除放入暂存区

git rm --cached [file] // 停止追踪指定文件,但该文件会保留在工作区

git checkout [file] //恢复暂存区的指定文件到工作区

git checkout . // //恢复暂存区的指定文件到工作区
 
git commit -m [message] // 提交暂存区到仓库区

git commit --amend // 将指定文件的新变化,提交到上一次 commit

git commit --amend 命令执行后,会进入 vim 编辑器。默认直接shift+Z+Z(windows 平台下)退出即可。可以在这里改写上一次commit的提交信息。

stash

将不需要commit的临时变更放置到堆栈中,需要时再提取出来。

git stash save [message] // 将当前工作目录和暂存区的变更放入堆栈

git stash list // 查看stash了哪些内容
git stash show // 查看最近一次stash内容的改动
git stash show stash@{num} // 查看num次内容的改动

git stash pop // 弹出最近一次stash的内容到工作目录,并从stash列表中删除
git stash apply // 弹出最近一次stash的内容到工作目录,但不从stash列表中删除

git stash drop stash@{num} // 删除num这个stash
git stash clear // 删除所有stash

日志

git log // 显示当前分支的版本历史

git log --oneline --decorate // 日志单行显示

分支

git branch // 列出所有本地分支

git branch -r // 列出所有远程分支

git branch -a // 列出所有本地分支和远程分支

git branch [new-branch-name] // 基于当前分支, 新建一个分支,但依然停留在当前分支

git checkout -b [new-branch-name] // 基于当前分支, 新建一个分支,并切换到新分支

git checkout [branch-name] // 切换到指定分支

git checkout [commit] // 切换到指定节点

git branch -d [branch-name] // 删除分支

分支变更

  1. 合并
git merge [branch] // 合并指定分支到当前分支

git cherry-pick [commit] // 选择一个commit,合并进当前分支

git merge

  1. 变基
git rebase [branch]|[commit] // 当前分支变基到指定分支

git rebase

  1. 撤销
git revert <commit> // 撤销节点C3的修改,并生成新的节点C5

git revert

// 将HEAD指向C3, 删除后面的C4,C5节点
git reset [--mixed] <commit> // 清空暂存区,保留工作目录。c4,c5带来的差异也留在工作目录

git reset --soft <commit> // 保留暂存区和工作目录。c4,c5带来的差异会放入暂存区

git reset --hard <commit> // 清空暂存区和工作目录。c4,c5带来的差异会被删除

git reset

git reset命令执行时,工作目录和暂存区可以有修改内容。但要注意命令执行后工作目录和暂存区内容的变化。

同步

git pull [remote] [branch] // 取回远程仓库的变化,并与本地分支合并

git push [remote] [branch] // 上传本地指定分支到远程仓库

git push [remote] --force // 强制推送所有分支到远程仓库

git fetch [remote] //下载远程仓库的所有变动

git remote -v // 显示所有远程仓库

标签

git tag // 列出所有tag

git tag [tag] //新建一个tag在当前commit

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

git show [tag] // 查看tag信息

git push [remote] [tag] // 提交指定tag

git push [remote] --tags // 提交所有tag

参考

  1. git 官方文档
  2. git Reset 三种模式
posted @ 2022-08-27 14:46  renzhsh  阅读(36)  评论(0编辑  收藏  举报