Git 常用命令总结

92 阅读4分钟

git branch

git branch   # 查看当前所有分支

git branch -v   # 查看所有分支最后一次提交

git branch <branch-name>   # 创建一个新分支,但不切换

git branch -d <branch-name>  # 删除本地分支(如果有未合并和未推送的提交,则操作失败)  
														 # -d <===> --delete
git branch -D <branch-name>  # 强制删除本地分支
														 # -D <===> --delete--force
git push origin -d <branch-name>  # 删除远程分支										

git config

git config --list  # 查看当前git的所有配置信息  按q键可以退出
git config --list --show-origin  # 查看所有的配置以及它们所在的文件

git config --global core.editor emacs  # 设置 emacs 为文本编辑器(windows上需要指定完整的路径)

git config --list --local  	 # 查看仓库级别的配置
git config --list --global   # 查看用户级别的配置
git config --list --system   # 查看系统级别的配置

# 设置全局 用户名和邮箱
git config --global user.name 'xxx'
git config --global user.email 'xxx'

# 查看当前使用的用户名和邮箱
git config user.name
git config user.email

git config --local user.name 'xxx'
git config --local user.email 'xxx'

git cherry-pick

git cherry-pick 命令”复制”一个提交节点并在当前分支做一次完全一样的新提交。

git cherry-pick commitID  # 复制单个提交

git cherry-pick commit1 commit2 commit3  # 复制多个提交

git cherry-pick commit1^..commit3  # 复制多个连续的提交

git cherry-pick 代码冲突

cherry-pick 多个commit时,可能会遇到代码冲突,这时 cherry-pick 会停下来。

  • 解决完冲突,重新提交后,使用git cherry-pick --continue让 cherry-pick 继续下去。
  • 使用git cherry-pick --abort 放弃 cherry-pick,回到操作前的状态。
  • 使用git cherry-pick --quit 退出 cherry-pick,保留 cherry-pick 成功的 commit,并退出 cherry-pick 。

git help

# 下面有三种等价方法可以获取 Git 帮助命令
git help <verb> 
git <verb> --help
man git-<verb>

git config --help  # 获取 git config 的命令说明
git config -h  # -h 选项获得更简明的帮助

git log

git log  # 按照提交时间从最晚到最早的顺序,列出当前分支的所有 commit

git log --follow [file]  # 列出某个文件的版本历史,包括文件改名

git log --author=Andy  # 根据提交者搜索log

git log -i --grep="Something in the message"  # 根据提交信息搜索log

git reflog

git reset

命令用于回退版本,可以指定退回某一次提交的版本。

git reset --hard commit_id  # 回退到指定的commit(数据直接被丢弃)
git reset --hard HEAD^  # 回退到最近一次提交

git reset --soft commit_id  # 回退到指定的commit (会在暂存区和工作区保留代码)
git reset --soft HEAD^  # 回退到最近一次提交

git revert

用于撤销某次提交,不会影响其他提交。

原理:生成一个新的提交,提交的内容是删除要撤销的提交后的内容;

例如:master分支此时有3个提交:commit_1commit_2commit_3

现在需要撤销commit_2的提交,使用git revert commit_2命令后,会创建一个commit_4commit_4提交的内容是删除commit_2后的内容;此时master分支有4个提交;

git revert <commit-id>  # 撤销某个提交

git revert -n|--no-commit <commit-id>  # 撤销某个提交,不会自动创建新的提交,需要手动创建新的提交

问题:需要再次提交commit_2diff后发现和master分支没有不同?原因是master中已经存在commit_2,表示已经提交过该内容。

解决:执行git revert commit_4命令,生成commit_5,将commit_2删除的内容再次恢复过来;

git remote

管理远程仓库的连接

git remote -v # 查看本地git仓库 关联的远程仓库地址

git remote add <name> <url> # 添加一个远程的连接

git remote rename <old-name> <new-name> # 重命名远端仓库的连接

git remote set-url <name> <url> # 修改远程仓库连接的url

git remote remove <name> # 删除指定的远程仓库连接

远程关联仓库 如下:
git remote add origin https://github.com/good-zh/my-react-manage-project.git

将生成的token拼接到url中 如:hghp_Wz82Mn5s4k99xOa2JNX4SRaJpfqLK2oArfJ

git remote add origin https://hghp_Wz82Mn5s4k99xOa2JNX4SRaJpfqLK2oArfJ@github.com/good-zh/my-react-manage-project.git

git rebase

juejin.cn/post/696910…

git rev-parse

git rev-parse <commit-ish> 
# <commit-ish> 是待解析的 Git 对象的标识符,可以是一次提交(commit)、分支(branch)、标签(tag)

git rev-parse HEAD # 获取当前分支的最新提交的 SHA-1 值

git stash

将本地没有git commit,但已经 git add 暂存的内容,进行缓存并从当前分支移除,缓存的数据结构为堆栈,先进后出。

git stash list  # 查看所有stash

git stash save "message"  # 保存一个stash,并添加备注

git stash apply <stash_id>  # 应用指定修改,在stash中保留

git stash pop <stash_id>  # 应用指定修改,从stash中删除

git stash clear  # 清空stash

git stash drop <stash_id>  # 从列表删除指定stash