通常,很多朋友在使用 Git
的时候都会直接用 IDE
中集成的插件或者自带的工具等来实现代码的拉取、提交、合并以及其他操作,当然这肯定也是可以的,但是长期这样子操作,我们就会忽略掉 Git
业务运行的底层逻辑。
那么,我这里就精心总结了我这么多年所用到的最常见的命令汇总,只需要 一篇文档 就能够轻松搞定你所有的 Git
操作烦劳。
一、拉取其他分支代码:
1、先克隆远程仓库代码 Main
分支
git clone <仓库地址>
2、切换目录到项目文件夹中
3、将远程仓库的所有分支拷贝到本地仓库
git fetch
4、切换到目标分支
git checkout <目标分支>
二、查看分支列表
git branch
三、创建分支
git branch <分支名称>
四、切换分支
git checkout <目标分支>
五、同步远程代码到本地
git pull origin <指定分支>
六、合并分支
1、通过 merge
命令将其他分支的代码合并到当前分支:
git merge <目标分支>
2、如果想要将 YW
分支合并到 TEST
分支。
首先确保 YW
和 TEST
两个分支的代码都已经提交到远程仓库,并且已经更新了最新的代码;
而后由 YW
分支切换到 TEST
分支;
执行命令 git merge YW
将本地的 YW
分支合并到 TEST
分支;
最后将 TEST
分支提交到远程仓库即可完成合并。
3、合并分支的时候不 Commit
,自行可以继续编辑合并的文件:
git merge --no-ff --no-commit <目标分支>
4、合并分支后撤销合并:
第一步:
git checkout <执行 merge 操作所在的分支>
第二步:
git reset --hard <merge 前的版本号>
当然,这里还有其他的方案。
5、merge
后没有 commit
,但是想要终止 merge
,可以采取如下方案
git merge --abort
七、拉取指定分支的指定文件到当前分支
采用 checkout
命令,--patch
参数表示补丁,而不是直接替换整个文件
git checkout --patch <指定某个分支名> <目标分支的指定文件或者文件夹名称>
八、列出两个分支的差异文件列表:
采用命令 diff
进行差异比较,加上参数 stat
可以只列出有差异的文件列表。命令如下所示:
git diff <分支1> <分支2> --stat
y - 存储这个
hunk
n - 不存储这个hunk
q - 离开,不存储这个hunk
和其他hunk
a - 存储这个hunk
和这个文件后面的hunk
d - 不存储这个hunk
和这个文件后面的hunk
g - 选择一个hunk
/ - 通过正则查找hunk
j - 不确定是否存储这个hunk
,看下一个不确定的hunk
J - 不确定是否存储这个hunk
,看下一个hunk
k - 不确定是否存储这个hunk
,看上一个不确定的hunk
K -不确定是否存储这个hunk
,看上一个hunk
s - 把当前的hunk
分成更小的hunks
e - 手动编辑当前的hunk
? - 输出帮助信息
九、删除分支
# 删除本地分支
Git branch -dlocalBranchName
# 删除远程分支
Git push origin --deleteremoteBranchName
十、重命名分支
在当前分支时
git branch -m new_branch_name
1、当不在当前分支时
git branch -m old_branch_name new_branch_name
十一、回滚
# 查看提交的历史
git log
# 如果嫌上面的输出信息过多可以使用这条(只输出版本号)git log --pretty=oneline # 回到上个版本
git reset --hard HEAD^
# 回到上上个版本
git reset --hard HEAD^^
# 本地分支回滚到指定版本
git reset --hard <commit ID号>
# 强制推送到远程分支
git push -f origin <branch name>
# 强制推送到指定分支,这里指定的版本之后的提交记录将会移除。
十二、commit
后但是没有 push
,想要撤回:
使用 git log
查看 git
操作日志,如下:
在这个例子中,a123456 是要取消的提交,b123456 是要回退到的提交。
撤回 commit
但不取消暂存区的修改内容:软回退
git reset --soft b123456
撤回的同时将本地修改也删除掉:硬回退
git reset --hard b123456
如果已经 push 到远程分支了,那么需要将当前的撤回推送到远程分支一下,命令如下:
git push -f