Mobile wallpaper 1Mobile wallpaper 2Mobile wallpaper 3Mobile wallpaper 4Mobile wallpaper 5Mobile wallpaper 6
1640 字
8 分钟
0 次阅读
从零开始掌握 Git

Git 基本信息配置#

在使用 Git 命令之前需要先配置好用户名和邮箱:

git config --global user.name "your name"
git config --global user.email email@mail.com

可以查看全局的 Git 配置:

git config --global --list

创建本地仓库#

可以通过 url 下载远程仓库到本地:

git clone <url>

也可以在当前目录下初始化一个新的本地仓库:

git init

之后需要手动将本地仓库关联到远程仓库:

git remote add <origin-name> <url>

在关联本地仓库到远程仓库之前,如果默认分支名是 master,则最好将分支改名为 main

git branch # 查看本地的分支
git branch -m master main # 将 master 分支改名为 main 分支

提交新版本文件#

先要将修改过的或者新创建的文件添加到暂存区:

git add <file-name>

在提交前最好前确认一下新版本与旧版本相比改了哪些地方:

git diff --staged

然后将暂存区的文件添加到本地仓库:

git commit -m "message"

可以通过以下命令合并以上的两个步骤:

git commit -am "message"

修改最近一次提交,本质上是删除最新版本然后重新提交一个新版本:

git commit --amend

分支管理#

分支生命周期管理#

创建一个新分支:

git branch <new-branch-name>

删除分支:

git branch -d <branch-name>

分支切换#

将指向当前版本的指针移到指定分支的最新版本:

git checkout <branch-name> # 旧版本
git switch <branch-name> # 新版本

可以在创建分支的同时切换到新分支上:

git checkout -b <new-branch-name>

分支合并#

将指定分支合并到当前分支上:

git merge <branch-name>

将当前分支变基到指定分支上,来实现顺序开发的效果:

git rebase <branch-name>

将指定分支变基到指定分支后面

git rebase <branch-name-front> <branch-name-behind>

提交历史记录整理#

在当前分支上复制其他版本节点的提交记录:

git cherry-pick <node-name>...

废弃当前分支 branch-name 节点之后的所有提交记录,会唤出可以调整废弃节点删除与否以及顺序的交互界面,然后根据调整结果重新生成新的提交记录链条:

git rebase -i <node-name>

控制更精细的版本切换#

branch-name 替换为 node-name 可以将指向当前版本的指针移到指定节点:

git checkout <node-name> # 新版本
git switch <node-name> # 新版本
TIP
  • node-name 可用的取值
    • 节点对应的具体哈希值,可以只写前几个字符。
    • HEAD,表示当前版本。
    • node-name 后面添加^,表示指定节点的上一个节点,可叠加。
    • node-name后面添加~n,表示指定节点往回退 n 步所对应的节点,可叠加。

也可以强制将不同分支的指针移动到指定节点:

git branch -f <src-branch-name> <target-node-name>

远程仓库管理#

添加远程仓库的连接:

git remote add <origin-name> <url>

查看所有远程仓库的连接信息:

git remote -v

从远程仓库下载最新的分支版本信息并更新本地仓库的所有远程仓库分支指针:

git fetch <origin-name> <remote-branch-name>

从远程仓库下载最新的分支版本信息并与当前分支 merge使用此命令需要当前分支为被拉取的远程分支所对应的本地分支

git pull <origin-name> <remote-branch-name>

从远程仓库下载最新的分支版本信息,同时将当前所在的分支变基到被拉取的远程分支。一般是在 feature 分支合并到 main 分支时使用

git pull <origin-name> <remote-branch-name> --rebase

将当前分支的最新状态上传到远程仓库,如果发生冲突则上传失败:

git push <origin-name>

将当前分支的最新状态上传到远程仓库,如果发生冲突则以本地分支状态为准,只可以在远程仓库的个人分支使用此命令

git push <origin-name> --force

SSH 秘钥配置#

首先需要在本机生成秘钥:

ssh-keygen -t rsa -C '说明'

接着给 GitHub 账户添加生成的秘钥的公钥,这样账户下的所有仓库均可通过公钥直接访问。

然后测试与 GitHub 的 SSH 通信是否正常:

ssh -T git@github.com

如果拒绝访问,在 SSH 配置目录下的 config 文件中添加以下配置即可:

Host github.com
HostName ssh.github.com
User git
Port 443

GitHub Flow#

一般来说,我们没有往开源项目直接 git push 新的 feature 分支的权限,因此需要先 fork 项目到我们自己的账号上,然后使用 git clone 命令拉取自己账号上的项目到本地。

在开始新的 feature 分支之前,需要先添加远程仓库连接。这里涉及两个远程仓库,一个是原项目 upstream,另一个是我们 fork 出来的项目 origin,后者已经自动配置好了,所以我们只需要添加原项目远程仓库的 url:

git remote add upstream <upstream-url>

在创建 feature 分支之前需要先拉取原项目仓库主分支的最新状态:

# 同步原项目仓库的最新 main 分支状态
git pull upstream main
# 创建并切换到 feature 分支
git checkout -b <feature-branch-name>

feature 分支每执行一次 git commit 之后需要把最新的分支信息推送到 fork 仓库:

# 提交新版本记录
git commit
# 推送更新到 fork 仓库
git push origin <feature-branch-name>

feature 开发完毕后,就需要向原项目仓库提交 PR 请求,流程如下:

# 从原项目仓库拉取最新的 main 分支更新,然后将 feature 分支变基到 main 分支上
# 执行此命令前需要确保当前处于 feature 分支上
git pull upstream main --rebase
# ...... 处理合并分支产生的冲突,检查合并后代码是否正常运行
# 将 feature 分支推送到 fork 仓库
git push origin <feature-branch-name> --force
# ...... 向原项目仓库提交 PR 请求

有可能在执行 git pull 命令之后 main 分支又产生了新的版本,导致 PR 失败,此时只需要再次重复上述 PR 流程即可。

在 PR 成功之后,可以删除 fork 仓库中的 feature 分支和本地仓库的 feature 分支:

git switch main
git branch -d <feature-branch-name>

参考#

从零开始掌握 Git
https://starrainer.cn/posts/从零开始掌握git/
作者
星雨月音
发布于
2025-12-19
许可协议
CC BY-SA 4.0

部分信息可能已经过时

封面
Sample Song
Sample Artist
封面
Sample Song
Sample Artist
0:00 / 0:00