一、分支概念
每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止 到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。 HEAD 严格来说不是指向提交,而是指向master,而 master才是指向提交 的,所以,HEAD指向的就是当前分支。
开始的时候,master分支是一条线,Git 用 master 指向最新的提交,再用 HEAD指向 master,就能确定当前分支,以及当前分支的提交点。每次提 交,master分支都会向前移动一步,这样,随着你不断提交,master分支 的线也越来越长。

二、创建分支过程
- 首先,确保你当前在主分支(通常是master或main分支)上工作。你 可以使用以下命令切换到主分支:
cd /test # 先切换到之前创建master主分支
git checkout master # 确保当前操作位置是在主分 支上
- 接下来,使用以下命令创建一个新的分支:
git branch feature-branch
这将创建一个名为"feature-branch"的新分支。
- 现在,你需要切换到新创建的分支上。使用以下命令切换分支:
git checkout feature-branch
git branch # 查看当前分支
* feature-branch # 当前所在哪个分支,哪个分支前面有*号
master
也可以使用如下命令直接创建并切换到"feature-branch"分支,-b 选项相当 于执行两条命令,git checkout 和 git branch。
git checkout -b feature-branch
git branch # 跟上面的操作效果一样
* feature-branch
master
这两个操作都将切换到新创建的"feature-branch"分支。
- 在新分支上进行编写,提交更改。你可以使用以下命令添加更改并将更 改提交到本地仓库:
vim test.c # 添加新内容
hello test
git add . # 提交到缓存区,这里也可以写master分支的目录名,比如test
git commit -m "提交消息" # 提交消息写清注释 信息即可
- 当代码任务完成后,需要将更改合并回主分支。首先,切换回主分支:
git checkout master
git branch
feature-branch
* master
cat test.c
刚才写入的内容没有了,是因为之前是在其他分支上操作的,并非在master 上 # 所以切换回master后,显示的内容只会是master分支上的内容
- 然后,使用以下命令将你的分支合并到主分支:
git merge feature-branch
cat test.c # 合并完成,其他分支的内容被合并 到了master上
hello test
这将把你的"feature-branch"分支的更改合并到主分支上。如果存在冲突, 需要手动解决冲突。Git会在冲突的文件中标记出冲突的部分,你需要打开 这些文件并手动编辑以解决冲突。解决冲突后,你需要再次提交更改。
- 最后,如果你想删除不再需要的分支,可以使用以下命令删除分支:
git branch -d feature-branch
这将删除名为"feature-branch"的分支。如果你想强制删除分支(即使该分 支尚未合并),可以使用以下命令:
git branch -D feature-branch
三、解决分支冲突
git checkout -b y123 # 创建并切换到新 分支
切换到一个新分支 'y123'
vim test.c # 写入点内容
hello test yyyy
git add test.c # 将新分支写入的内容提交到 缓存
git commit -m "yy" # 提交新分支并注释 为"yy"
y123 32e5a5a\] yy
1 file changed, 1 insertion(+)
git checkout master # 切换到主分支 切换到分支 'master'
cat test.c # 此时还未合并,所以只显示当前 master分支的内容
hello test
vim test.c # 向master分支内写入些内容
hello test hhhh
git add test.c # 提交master分支
git commit -m "hh" # 正式提交,注释信息 为"hh"
\[master 4a51362\] hh
1 file changed, 1 insertion(+)
git merge y123 # 合并新分支
自动合并
test.c 冲突(内容):合并冲突于 test.c # 提示冲突了
自动合并失败,修正冲突然后提交修正的结果。
git status # git状态信息也提示两个分支冲突 了
位于分支 master
您有尚未合并的路径。
(解决冲突并运行 "git commit")
(使用 "git merge --abort" 终止合并)
未合并的路径:
(使用 "git add ..." 标记解决方案)
双方修改: test.c
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
cat test.c # git使用记号帮我们标记除 了冲突位置和新分支的内容
hello test \>\>\>\>\>\> y123
vim test.c # 手动修改冲突文件
hello test hhhh yyyy
git add test.c # 提交修改后的分支
git commit -m "zuizhong" # 正式提交, 注释信息为"zuizhong"
\[master f13e70e\] zuizhong
git log --graph --pretty=oneline -- abbrev-commit # 查看日志分析分支合并情况
\* f13e70e (HEAD -\> master) zuizhong # 当前分支所处位 置为zuizhong
\|\\
\| \* 32e5a5a (y123) yy # y123分支冲突时所处的分支位置为yy
\* \| 4a51362 hh # master分支冲突时所处的分支位置为hh
\|/
\* 173a360 test
\* 9e89cac add new file test.c
git branch -d y123 # 删除y123分支
已删除分支 y123(曾为 32e5a5a)。
cat test.c # 查看master分支上的最终版 本
hello test hhhh yyyy
## 四、Git 拉取
再启动一台主机,YH2
ssh-keygen
ssh-copy-id [email protected]
yum -y install git
mkdir /yh2 # 新建git仓库
cd /yh2/
git init # 仓库初始化,当前目录作为 master
提示:使用 'master' 作为初始分支的名称。这个默认分支名称可能会更改。 要在新仓库中
提示:配置使用初始分支名,并消除这条警告,请执行:
提示:
提示: git config --global init.defaultBranch
提示:
提示:除了 'master' 之外,通常选定的名字有 'main'、'trunk' 和 'development'。
提示:可以通过以下命令重命名刚创建的分支:
提示:
提示: git branch -m \