视频加载失败

Git 分支与提交操作:从本地仓库到 GitHub

1248 字
6 分钟
Git 分支与提交操作:从本地仓库到 GitHub
Git 分支与提交操作:从本地仓库到 GitHub

Git 的日常操作可以理解成一条链路:先把文件变成一次提交,再从提交创建分支,最后把分支推送到远程仓库。把这条链路理清之后,git branch、git commit 和 git push 就不容易混在一起了。

Git 分支与提交流程图
Git 分支与提交流程图

一、Git 中的三个位置#

一次修改通常会经过三个位置:

  1. 工作区:正在编辑的文件。
  2. 暂存区:执行 git add 后,准备放入下一次提交的内容。
  3. 提交历史:执行 git commit 后,形成一个可以被分支指向的版本节点。

常用检查命令是:

Terminal window
git status

它可以告诉我们哪些文件还没有加入暂存区、哪些文件已经暂存,以及当前处于哪个分支。

二、初始化仓库并完成第一次提交#

如果看到:

已初始化空的 Git 仓库于 /path/to/project/.git/

说明 .git 目录已经创建,但仓库还没有提交。此时先执行:

Terminal window
git add .
git commit -m "Initial commit"

git add . 会把当前目录下的修改加入暂存区;git commit 才会真正产生第一个提交。

也可以只提交某个文件夹:

Terminal window
git add folder-a/
git commit -m "更新 folder-a"

三、创建和切换分支#

创建并立即切换#

现在 Git 推荐使用:

Terminal window
git switch -c Quadruped-robot-investigation

其中 -c 的含义是 create,表示创建新分支并切换过去。

旧版 Git 的等价写法是:

Terminal window
git checkout -b Quadruped-robot-investigation

只创建,不切换#

Terminal window
git branch Quadruped-robot-investigation

这个命令要求当前仓库至少已经有一个提交。空仓库中没有 master 对应的提交对象,因此会出现:

fatal: 不是一个有效的对象名:'master'

解决方法就是先完成第一次提交,再创建分支。

切换到已有分支#

Terminal window
git switch Quadruped-robot-investigation

旧版 Git 可以写成:

Terminal window
git checkout Quadruped-robot-investigation

查看本地分支:

Terminal window
git branch

带有 * 的分支就是当前分支。

修改当前分支名称#

git branch -m 是重命名,不是创建分支:

Terminal window
git branch -m 新名称

例如,想把当前分支直接改名为目标名称,可以使用:

Terminal window
git branch -M Quadruped-robot-investigation

不要写成 git branch -b,因为 git branch 没有 -b 这个选项;创建并切换应使用 git switch -c 或 git checkout -b。

四、不同文件夹能否推送到不同分支?#

可以选择性地提交不同文件夹:

Terminal window
git switch -c branch-a
git add folder-a/
git commit -m "更新 folder-a"
git switch main
git switch -c branch-b
git add folder-b/
git commit -m "更新 folder-b"

但要注意,Git 的分支不是“只存一个文件夹”。分支指向的是整个仓库的一组提交,每个提交描述的是整个项目在某一时刻的状态。git add folder-a/ 只是让这次提交主要包含 folder-a 的修改。

如果两个文件夹需要长期完全独立管理,通常更适合拆成两个仓库;如果只是希望同时在不同目录中开发不同分支,可以考虑 git worktree。

五、添加远程仓库#

第一次添加远程仓库:

Terminal window
git remote add origin https://github.com/33233dp/AHU.git

查看远程地址:

Terminal window
git remote -v

如果出现:

error: 远程 origin 已经存在。

说明远程仓库已经配置过了,不需要再次 add。如果地址写错,使用 set-url 修改:

Terminal window
git remote set-url origin https://github.com/33233dp/AHU.git

在终端中输入远程地址时要使用原始 URL,不要把 Markdown 链接写法 [文字](URL) 一起复制进去。

六、使用 SSH 推送到 GitHub#

本机有 SSH 密钥,并不代表 HTTPS 远程地址会自动使用 SSH。下面这个地址仍然是 HTTPS:

https://github.com/33233dp/AHU.git

如果希望使用 SSH,应把远程地址改成:

Terminal window
git remote set-url origin git@github.com:33233dp/AHU.git

测试 SSH 是否能连接 GitHub:

Terminal window
ssh -T git@github.com

如果密钥没有加入当前 SSH agent,可以尝试:

Terminal window
ssh-add ~/.ssh/id_ed25519

七、推送本地分支#

第一次把本地分支推送到远程时,使用 -u 建立跟踪关系:

Terminal window
git push -u origin Quadruped-robot-investigation

建立跟踪关系后,后续在该分支中通常可以直接使用:

Terminal window
git push
git pull

完整流程可以压缩成下面几步:

Terminal window
git init
git add .
git commit -m "Initial commit"
git switch -c Quadruped-robot-investigation
git remote add origin git@github.com:33233dp/AHU.git
git push -u origin Quadruped-robot-investigation

如果远程 origin 已经存在,就跳过 git remote add origin ...;如果它仍然是 HTTPS 地址,则先用 git remote set-url 改成 SSH 地址。

常见报错速查#

报错或现象原因处理方式
不是一个有效的对象名:'master'仓库还没有第一次提交先执行 git add . 和 git commit
未知开关 'b'把 git branch 和 checkout -b 的写法混用了使用 git switch -c 分支名
远程 origin 已经存在远程名称已经配置用 git remote -v 查看,必要时用 git remote set-url 修改
推送时要求输入用户名和密码远程地址是 HTTPS改用 git@github.com:用户/仓库.git 的 SSH 地址

记住一句话即可:先提交,再建分支;先确认远程协议,再推送分支。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Git 分支与提交操作:从本地仓库到 GitHub
https://chachaprj.top/posts/git-分支与提交操作/
作者
ChaCha
发布于
2026-10-08
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
ChaCha
Pain Equals Gain
公告
欢迎来到我的博客!
分类
标签
最新动态
站点统计
文章
15
分类
7
标签
19
总字数
21,598
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录