Git常用操作大全

  • 创建新仓库
git init # 在当前目录下
git init <project path> # 指定项目名
  • 配置
git config --list # 显示当前的Git配置
git config -e # 编辑Git配置文件,在最后加--global选项代表全局设置

git config user.name "<user name>"
git config user.email "<user email address>"
# 设置提交代码时的用户信息,在config后加--global选项代表全局设置
  • 克隆已有仓库
git clone <repository path> # 若已有仓库在云端服务器,则<repository path>为<username@host:path>的形式
  • 工作流

其中Working是工作区(开发的区域),Index是暂存区,Local Repository是本地仓库,HEAD是指向本地仓库中最新版本的游标,Remote Repository是指远程仓库。

  • 添加(至暂存区)
git add <filename>
git add -u # 即添加所有改动过的文件(本就存在于暂存区的)

git add -p # 添加每个变化前,都会要求确认(对于同一个文件的多处变化,可以实现分次提交)
  • 删除文件
git rm <filename> # 删除工作区文件,并且将这次删除放入暂存区,在rm后加上--cached选项代表停止追踪指定文件但该文件会保留在工作区
git mv <file original name> <file current name> # 改名文件,并且将这个改名放入暂存区
  • 比较文件的差异
git diff HEAD~<N> # 工作区与某次提交的差异

git diff # 工作区与暂存区(暂存区不为空则是与最后一次提交)的差异
git diff <branch1> <branch2> # 两个分支最后一次提交的差异
git diff --cached # 暂存区与本地仓库的差异(--cached可以换成--staged)
# 在最后加--stat选项可以显示详细差异
# 最后可以加上要比较的文件的路径
  • 提交
git commit -m "<code committing info>"
git commit -a # 提交工作区自上次commit之后的变化直接到本地仓库
git commit -v # 提交时显示所有diff信息
# 提交改动至本地仓库
# 在commit后加--amend选项代表重做上一次提交

将当前暂存区中的所有改动提交至本地仓库。

  • 撤销
git reset --soft <commit version> # 重置本地仓库至某次提交(--soft选项可以替换为--keep选项)
git reset --mixed <commit version> # 重置本地仓库和暂存区至某次提交(--mixed选项可以省略)
git reset --hard <commit version> # 重置本地仓库、暂存区和工作区至某次提交
git checkout <filename> # 恢复暂存区的指定文件到工作区
git checkout <commit version> <filename> # 恢复某次提交指定文件到暂存区和工作区
git revert <commit version> # 新建一个提交用来撤销指定提交,后者的所有变化都将被前者抵消并且应用到当前分支
git stash # 临时保存工作区中未入暂存区的文件(可跨分支),可在最后加上save "<message>"
git stash list # 查看临时保存的列表
git stash pop stash@{$num} # 恢复某次临时保存(仅限一次)
git stash apply stash@{$num} # 恢复某次临时保存(可多次)
git stash drop stash@{$num} # 删除某次临时保存
git clear # 删除所有临时保存
  • 查看信息
git status # 显示有变更的文件,(若在最后加上-s选项则可获得简短的输出结果)
git log # 显示当前分支的版本历史
git log --stat # 显示当前分支的提交历史以及每次提交发生变更的文件
git log -S <keyword> # 根据关键词搜索提交历史

git log --follow <filename>
git whatchanged <filename>
# 显示某个文件的版本历史(包括文件改名)

git log -p <filename> # 显示指定文件相关的每次差异
git log -<n> --pretty --oneline # 显示过去n次提交
git shortlog -sn # 显示所有提交过的用户(按提交次数排序)
git blame <filename> # 显示指定文件是什么人在什么时间修改过
git show <commit version> # 显示某次提交的元数据和内容变化(若在show之后加上--name-only则只显示某次提交发生变化的文件名)
git show <commit version>:<filename> # 显示某次提交时某个文件的内容
git reflog # 显示当前分支的最近几次提交
  • 分支相关
git branch # 列出所有本地分支
git branch -r # 列出所有远程分支
git branch -a # 列出所有本地分支和远程分支
git branch <branch name> # 新建一个分支但依然停留在当前分支
git branch -d <branch name> # 删除指定分支
git checkout -b <branch name> # 新建一个分支并切换到该分支
git branch <branch name> <commit version> # 新建一个分支指向指定次提交
git branch --track <branch name> <remote branch name> # 新建一个分支并与指定的远程分支建立追踪关系
git branch --set-upstream  <branch name> <remote branch name> # 在现有分支与指定的远程分支之间建立追踪关系
git checkout <branch name> # 切换到指定分支并更新工作区
git checkout - # 切换到上一个分支
git merge <branch name> # 合并指定分支到当前分支(不将两分支的提交记录进行线性合并)
git rebase <branch name> # 合并指定分支到当前分支(将两分支的提交记录进行线性合并,指定分支的提交记录追加进当前分支的提交记录中)
git cherry-pick <commit version> # 选择一次提交合并进当前分支

git push origin --delete <branch name>
git branch -dr <remote server>/<branch name>
# 删除远程分支
  • 远程仓库同步
git push <remote server> <local branch>:<remote branch> # 从本地仓库推送提交至远程仓库的分支,若<local branch>与<remote branch>相同则省略:<remote branch>,若需强制推送则应在push之后加上--force选项
git push <remote server> --all # 推送所有分支到远程仓库
git pull <remote server> <remote branch>:<local branch> # 从远程仓库拉取并合并至本地仓库的分支,若是拉取并合并至当前分支则省略:<local branch>
git fetch <remote server> # 下载远程仓库的所有变动
git remote -v # 显示所有远程仓库
git remote show <remote server> # 显示某个远程仓库的信息
git remote add <remote repository name> <remote server> # 增加一个新的远程仓库并命名
  • 标签相关
git tag # 列出所有标签
git tag <tag name> <commit version> # 在指定提交中新建一个标签(不指定提交版本则在当前提交中新建)
git tag -d <tag name> # 删除本地标签
git push origin :refs/tags/<tag name> # 删除远程标签
git show <tag name> # 查看标签信息
git push <remote server> <tag name> # 提交指定标签
git push <remote server> --tags # 提交所有标签
git checkout -b <branch name> <tag name> # 新建一个分支并指向某个标签
  • 其他
git archive # 生成一个可供发布的压缩包
posted @ 2021-07-26 17:15  SIGMA711  阅读(64)  评论(0编辑  收藏  举报