Git 情景速查
本文汇集一些 Git 常见情境(不常见)的使用方法,例如拉取远程分支并创建本地分支、拉取 pull request 到本地分支、恢复本地误删的文件、如何撤销 add、commit 操作、如何对比版本间的文件差异等等。
拉取远程分支并创建本地分支
使用如下 git 命令查看分支情况
git branch # 查看本地分支
git branch -r # 查看所有远程分支
git branch -a # 查看远程和本地所有分支
在输出结果中,前面带 *
的是当前分支。
使用 checkout 命令检出分支,并建立的本地分支会和远程分支建立映射关系。
git checkout -b 本地分支名x origin/ 远程分支名x
拉取 pull request 到本地分支
在 GitHub 上做合并检查时,我们需要将远程仓库的 PR 拉取到本地进行 review,命令格式如下:
git fetch origin pull/PRId/head:LocalBranchName
其中,PRId 为该 Pull Request 的序号,LocalBranchName 为拉取到本地后的分支名称,例如:
git fetch origin pull/1300/head:pr1300
当然,这里的远程仓库不一定是 origin,对于大型协作项目,通常可能是 upstream,例如:
git fetch upstream pull/1300/head:pr1300
恢复本地误删的文件
通过 git 进行管理的项目,如果在本地编辑的过程中误删了某些文件或者文件夹,可以通过 git 操作来复原。
首先使用 git status
查看本地对改动的暂存记录,例如不小心删了工程中的 math 目录。
$ git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add/rm <文件>..." 更新要提交的内容)
(使用 "git restore <文件>..." 丢弃工作区的改动)
删除: math/CMakeLists.txt
删除: math/MathFunctions.c
删除: math/MathFunctions.h
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
由于 math 目录及其文件在之前已经提交了,因此可以通过 checkout 方式找回。
git checkout math
这样可以复原了。
如何撤销 add 操作
对于已经 add(暂存)但还没 commit(提交)的操作,可以使用如下命令取消暂存:
git reset <file>
或者取消所有暂存更改:
git reset