Git笔记

Posted by saltyfishyjk on 2022-03-27
Words 824 and Reading Time 3 Minutes
Viewed Times

Git笔记

[TOC]

Part 0 前言

Git是一款强大的版本控制工具,在OO和OS课程中也起着重要作用。

网络上已有诸多优秀的Git教程,这里主要记录常用操作,以备复习查看。

Part 1 相关资源

  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:在Git2.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
2
git config user.name  # 查看用户名
git config user.email # 查看 email

解决【fatal: 过早的文件结束符(EOF)】

参考资料:成功解决使用git clone下载失败的问题: fatal: 过早的文件结束符(EOF) fatal: index-pack 失败

解决办法:执行git config --global http.postBuffer 524288000


This is copyright.