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> --forceSSH 秘钥配置
首先需要在本机生成秘钥:
ssh-keygen -t rsa -C '说明'接着给 GitHub 账户添加生成的秘钥的公钥,这样账户下的所有仓库均可通过公钥直接访问。
然后测试与 GitHub 的 SSH 通信是否正常:
ssh -T git@github.com如果拒绝访问,在 SSH 配置目录下的 config 文件中添加以下配置即可:
Host github.comHostName ssh.github.comUser gitPort 443GitHub 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 maingit branch -d <feature-branch-name>参考
- Git 语法学习:Learn Git Branching
- 企业开发流程:Git企业级使用规范 - 操作流程
- 开源项目开发流程:十分钟学会正确的github工作流,和开源作者们使用同一套流程
- GitHub Flow 详细讲解:给学完Git,还不会用GitHub的朋友们
部分信息可能已经过时











