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_1,commit_2,commit_3;
现在需要撤销commit_2的提交,使用git revert commit_2命令后,会创建一个commit_4,commit_4提交的内容是删除commit_2后的内容;此时master分支有4个提交;
git revert <commit-id> # 撤销某个提交
git revert -n|--no-commit <commit-id> # 撤销某个提交,不会自动创建新的提交,需要手动创建新的提交
问题:需要再次提交commit_2,diff后发现和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
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