一、流程
- 本地创建分支,设定连接什么云分支
- 本地创建文件,暂存、提交–>本地分支
- 本地分支推送所有修改–>云仓库
二、分支概念
- 在版本回退里,每次提交,git都把它们串成一条时间线,这条时间线可以理解为是一个分支。默认git创建仓库以后,只有一个分支,叫做主分支master/重命名main。
- HEAD指针,严格来说不是指向提交,而是指向master,master才是指向提交的。而HEAD指向的分支就是当前分支。
- 每次提交,master分支都会向前移动一步,这样,随着不断的提交,master分支线也会越来越长,而HEAD只要一直指向master分支即可指向当前分支。
三、父子分支 vs 并列分支
1. 父子分支
- 子分支创建时,包含了父分支的所有历史。
- 子分支和父分支,在创建后是独立的,不会互相影响,
要将 父分支的更改 引入子分支,需要执行合并(merge)或重基(rebase)操作。
要将 子分支的更改 引入父分支,需要执行合并(merge)或重基(rebase)操作。
2. 并列分支
- 并列分支的历史也是独立的,不会互相影响。
要将 一个并列分支的更改 引入另一个并列分支,需要执行合并(merge)或重基(rebase)操作。
3. 相似之处
无论什么分支,都需要使用合并(merge)或重基(rebase),将一个分支的更改 引入到另一个分支中。
4. 不同之处
其实没什么不同,但是人类眼里意义不同。
5. 合并 A 分支到 B 分支时
- 当你在B分支上执行 git merge A 时,Git会找到A和B分支的共同祖先(即最近的共同提交)
- Git会比较共同祖先与分支A的差异,以及共同祖先与分支B的差异。这样,它可以确定两个分支各自做了哪些更改。
- Git会生成一个新的合并提交。这个合并提交包含:
A分支 自共同祖先以来的所有更改。
B分支 自共同祖先以来的所有更改。 - 合并提交在B分支的提交历史中形成一个新的节点。B 的历史将包括:
B 原有的所有提交。
A 的所有提交。
四、本地Git分支的增删查
1. 查看分支:git branch
- 输出:cyj和main是并列的分支,当前HEAD 指向cyj分支
2. 创建新分支,并立即切换HEAD到该分支:git checkout -b 新分支名称
3. 切换HEAD到分支:git checkout 分支名称
- 输出: Switched to branch ‘main’
Your branch is up to date with ‘origin/main’. - 翻译:已切换到分支 main。
您的分支与远程分支 origin/main 是最新的(没有新的提交)。
4. 删除分支:先切换到其他分支,再git branch -d 要删除的分支名称
- 输出: error: The branch ‘cyj’ is not fully merged.
If you are sure you want to delete it, run ‘git branch -D cyj’. - 翻译: 分支 cyj 上有一些更改还没有被合并到当前分支 main 中。
如果您确定要删除它,请 git branch -D cyj 强制删除
5. 显示所有分支的提交历史
- git log --oneline --graph --all
6. 检查本地分支与远程分支的关联情况
- git branch -vv
7. 将本地分支与远程分支关联
- 切换到本地分支 cyj
- 设置与远程分支的关联:git push -u origin cyj
- 验证关联:git branch -vv
五、本地Git分支中文件的增删查(本地创建,暂存,提交,推送到云仓库)
1. 查看本地 cyj 分支中的所有文件(包括 提交的文件+未提交的文件+未暂存的文件):ls
2. 查看本地 cyj 分支中的 未提交的文件 + 未暂存的文件:git status
- 翻译:当前处于 cyj 分支。当前分支 cyj 与远程分支 origin/cyj 同步。
列出未被 Git 跟踪的文件。可以使用 git add 命令将未跟踪的文件添加到 Git暂存区中,以便于提交。
列出了两个未被跟踪的文件:cyj.txt 和 main.txt。 - 不添加到 Git暂存区的话,cyj.txt 和 main.txt 就只是在本地文件夹(工作区)中存在而已,与Git无关
3. 暂存区中有两个文件cyj.txt和main.txt,指定只有cyj.txt提交到cyj分支下
- 切换到 cyj 分支
- 使用 git reset main.txt 命令将 main.txt 移出暂存区
- 提交暂存区全部文件,git commit -m “日志20240927-1”
- 在 Git 中,暂存区在所有分支间是共享的,提交时也只能提交暂存区全部文件
4. 将cyj分支的某一文件 移动到main分支
- 在移动文件之前,确保 cyj 分支中的更改已被提交
- 切换到目标分支 main
- git checkout cyj – path/to/your/file
- 在main分支上提交更改
5. 将cyj分支的所有文件 复制(合并)到main分支
- 在复制文件之前,确保 cyj 分支中的更改已被提交
- 切换到目标分支 main
- git merge cyj
- 在main分支上提交更改
6. cyj 分支中删除文件
- 切换到 cyj 分支
- 删除文件 git rm room.txt
- 更新删除文件的状态 git add -u
- 提交更改和日志 git commit -m “我删除了文件room.txt”
7. 本地测试折腾了一番,分别推送到云分支
六、正常一个文件夹只有一个git分支
所以删除当前文件夹的cyj分支,当前文件夹改名。
新建文件夹,克隆仓库,创建cyj分支,连接仓库的cyj分支。
新建文件夹,克隆仓库,创建lhy分支,连接仓库的lhy分支。
- 分支main:本地与云连着呢
- 分支cyj:本地与云连接上了
- 分支lhy:本地与云连接上了