Git基础
工作区
暂存区
版本库
Git配置
//todo
常用命令
git diff --cached
:比较暂存区和版本库git diff
:比较工作区和版本库git patch/git am
:生成补丁、打补丁git log 文件名
:查看某个文件的修改历史- -3:查看最近三个提交
- –stat:查看修改了哪些文件,不看文件细节
git reset head
:取消暂存,使用别名git unstage
git reset
:默认不修改文件,只修改Git记录。–hard同时修改文件,git checkout <file>
:取消修改,回退到版本库git revert <commit-id>
:撤销中间的某个版本,生成一个新的提交git merge <side2:合并到当前分支>
git cherry-pick <commit-id>
:copy一个版本到当前分支,不出现交叉,不影响被copy的分支git rebase side1 [side2:结构上side2在side1后面,side2省略的话,会将当前分支加到side1后面]
。第一个参数是基,第二个参数是要生成的补丁。side1省略的话相当于git rebase origin/head head。git remote prune origin
。远程分支已删除,本地未同步。通过git remote show origin查看,根据提示使用git remote prune origin同步已删除的分支git commit --amend
:修改最后一次提交信息- 合并最后两个提交:
git rebase -i 倒数第三个commit
- pick第一个,squash第二个
- 修改倒数第二次提交信息:
- git rebase -i head~2(倒数第三个commit)。
- 将相应commit的pick改为edit
- 退出编辑
- git commit –amend 修改提交信息。
- git rebase –continue:恢复提交
git blame <file>
显示文件每一行修改版本和作者git count-objects -vH
:查看仓库大小git gc
:Git垃圾回收
clone和fork
clone:将远程代码仓库A克隆到本地,如果不是Contributor,则无法将自己的提交push到仓库A中
fork:是GitHub提供的功能,将远程代码仓库A复制一份到自己的GitHub远程仓库B中,提交之后push到B。如果希望原作者合入你的修改,可以创建pull request,意思是请求对方拉取你的修改,如果原作者同意的话,就会将你的提交更新到仓库A中。
fork之后如果原项目更新了,如何同步原项目的修改?
1 | 设置upstream为原仓库连接,origin为自己fork的仓库连接 |
配置文件
.gitkeep
:git无法追踪空文件夹,当需要追踪空文件夹时,可以创建一个.gitkeep
文件放在这些文件夹中.gitignore
:配置git忽略哪些文件,可以使用路径通配符
Git-Flow工作流
//todo
结语
一直在用Git,但是缺少总结,这里占个坑,有时间再补。
参考资料: