Git笔记
[TOC]
Part 0 前言
Git是一款强大的版本控制工具,在OO和OS课程中也起着重要作用。
网络上已有诸多优秀的Git教程,这里主要记录常用操作,以备复习查看。
Part 1 相关资源
- Learning Git Branching 不错的git教程,适合系统学习git
Part 2 常用指令
git commit
git commit
:提交分支。常用格式为git commit -m 'Content'
,其中Content
为本次提交的相关说明。
git branch
&git checkout
git branch
:创建新的分支,如:git branch bugFix
会创建一个名为bugFix
的新分支。
git checkout
:切换到另一分支,如:git checkout bugFix
会切换到bugFix
分支。
git switch
:在Git
2.23中引入了git switch
命令,最终会取代git checkout
,也可以完成切换到另一分支的操作,如:git switch bugFix
git merge
git merge
:将两个分支合并到一起。我们新建一个分支,在其上面开发某个新功能,开发完成后再合并回到主线。如:git merge bugFix
,该命令将bugFix
分支合并入目前所指向的分支(如main
)
git rebase
第二种合并分支的方法是 git rebase
。Rebase 实际上就是取出一系列的提交记录,“复制”它们,然后在另外一个地方逐个的放下去。
分离HEAD
我们首先看一下 “HEAD”。 HEAD 是一个对当前检出记录的符号引用 —— 也就是指向你正在其基础上进行工作的提交记录。
HEAD 总是指向当前分支上最近一次提交记录。大多数修改提交树的 Git 命令都是从改变 HEAD 的指向开始的。
HEAD 通常情况下是指向分支名的(如 bugFix)。在你提交时,改变了 bugFix 的状态,这一变化通过 HEAD 变得可见。
通过哈希值来更改HEAD指向
git cherry-pick
git log
git log
:查看历史提交记录。当从GitHub clone一个仓库下来之后,我们可以通过这个指令方便地查看原作者都有哪些提交和更改。
git remote
用于在远程仓库的操作。
git remote -v
显示所有远程仓库
git remote set-url origin http://...
修改本地代码关联的远程地址,在OO系统中用于处理之前使用的gitlab服务器挂掉的情况
Part 3 Tag
为特定的commit打上tag,并在后续工作中依托tag发布release是常见的仓库管理功能,这里简单介绍。
为特定commit打tag
在GitHub上添加tag时只能选择对最近的commit添加,当我们有较远的commit需要打tag时,可以使用如下指令:
1 | git tag -a v4.0.0 -m 'message' 2cad43704c70a8d2a28854cc3fbbbad64356ca82 |
其中,v4.0.0
是tag名,message
是信息,2cad43704c70a8d2a28854cc3fbbbad64356ca82
是commit的hash code
发布release
在制作好tag后,可以在GitHub上选择tag进行release发布,其中的二进制附件没有大小限制,可以当作云盘(bushi
Part 4 Others
设置用户名和 email
GitHub 会根据 email 将 commit 与 GitHub 账户关联起来
查看用户名和 email
1 | git config user.name # 查看用户名 |
解决【fatal: 过早的文件结束符(EOF)】
参考资料:成功解决使用git clone下载失败的问题: fatal: 过早的文件结束符(EOF) fatal: index-pack 失败
解决办法:执行git config --global http.postBuffer 524288000
This is copyright.