我们每天都在使用git、但是往往不求甚解、只是停留在很浅的使用层面、所以决定写一篇汇总常见git操作的文章、方便查阅、从常用操作到高级操作、也会夹杂一些git原理的分析、此篇文章会长期补充更新。
常用操作
git init
初始化一个本地git仓库
git clone
拉取一个远程仓库
git checkout [branchName]
切换到 branchName 分支
git branch [branchName]
从当前分支拉取一个名为 branchName 的分支
关于git branch 有几点需要说明:
- 关于 git branch 、可以理解为指向某次提交的一个指针、它只是简单地指向某次提交记录、仅此而已。所以创建大量分支也并不会带来内存和存储上的开销
- 创建一个分支其实就相当于在说:“我想基于这个提交以及它所有的父提交进行新的工作。”
- git brach -l 罗列出当前所有的分支
👆两步在使用中也通常简化为:
git checkout -b [branchName]
创建一个 branchName分支 并 切换到该分支
git add
将 working directory 暂存到 stage area(index)
git commit -m 'xxx'
将暂存区(stage area)到改动提交到本地仓库
git commit 存储着你整个文件目录的一个快照、相当于复制粘贴、但是比复制粘贴优雅得多、它会对比本次提交和上一次提交的差异然后把这些差异保存为这次提交记录
git status
查看(对比)当前工作 working tree、stage area(index)、repository 的状态
git merge [branchName]
合并分支 branchName 分支到当前分支、如果冲突会采用 Automatic merge 模式、否则需要手动解决冲突
git fetch
从远程拉取分支
git pull
等同于 git fetch + git merge、 使用的时候会默认首选 Automatic merge 模式、简单粗暴的将本地版本同步为远程仓库的版本、一般不推荐直接git pull、但是如果是在规范的git flow 流程里面一般是没有什么问题的
git log [--all] [--oneline] [--graph] [--decorate]
查看 commit 关系图谱
git log [branchName]
查看 branchName 分支的 log 记录
git config --global alias.xxx 'command'
设置常用操作的快捷键
比如设置:git config --global alias.lol 'log --oneline --graph --decorate' 之后就可以直接使用 git lol 查看 commit 关系图谱
git rebase
rebase 即变基,顾名思义,就是改变基准点、合并分支、以某个 commit 为基准点可以随意修改 commit 历史,以分支为基准点可以合并分支,同时整理 commit。类似于
git merge,使分支保持单一链式,避免频繁的切换分支指向,导致分支 commit 混乱。
- git rebase --abort
- git fetch --all && git rebase branch
- 实际工作中同步远程和本地代码建议使用: git pull --rebase ( git fetch && git rebase origin/master && git push 的缩写 )
git diff
git stash
暂时贮藏还未完成的修改、方便进行 git pull 等其它操作。
git stash pop
基于上一步修改完成之后、回到之前等工作状态继续开发
总结
关于 git 的使用和理解,还有很多地方需要不断完善、今天,只是个开始