0%

Git笔记

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
2
3
4
5
6
7
8
# 设置upstream为原仓库连接,origin为自己fork的仓库连接
git remote add upstream 原仓库地址
# 拉取该连接的修改
git fetch upstream
# 合并远程仓库的修改
git merge upstream/master
# 推送修改到fork后的仓库
git push origin

配置文件

  • .gitkeep:git无法追踪空文件夹,当需要追踪空文件夹时,可以创建一个.gitkeep文件放在这些文件夹中
  • .gitignore:配置git忽略哪些文件,可以使用路径通配符

Git-Flow工作流

//todo

结语

一直在用Git,但是缺少总结,这里占个坑,有时间再补。

参考资料:

欢迎关注我的其它发布渠道