Git 分支和合并

分别到汉语母语中,您只需要一个选项:

开设分支的目的

分岐操作用于同时开发多个功能的分支。

分支的机制

分支就是指向提交的指针。当进行提交时,指向的提交就会移动到最新的提交。

“HEAD” 在中文中的意思是什么?

“HEAD” 指的是当前正在操作的分支。

创建一个新的分支

$ git branch <ブランチ名>

这个命令仅用于创建分支,并不会切换到该分支。

显示分支列表

$ git branch

# リモートリポジトリにあるブランチも表示する
$ git branch -a

带有星号的分支是当前所在的分支。

切换分支

$ git checkout <ブランチ名>

# featureブランチを作って切り替えることを考える
$ git branch feature
$ git checkout feature
# これは以下のコマンドと同じ
$ git checkout -b feature

让我们试着实践一下分支。

创建一个名为 branch_test 的目录并进行第一次提交。

$ mkdir branch_test
$ cd branch_test
$ git init
Initialized empty Git repository in /home/username/branch_test/.git/
$ echo init > init.html
$ git add .
$ git commit -m 'create init.html'
[master (root-commit) c3d069a] create init.html
 1 file changed, 1 insertion(+)
 create mode 100644 init.html
$ git log --oneline
c3d069a (HEAD -> master, feature) create init.html

创建feature分支。

$ git branch feature
$ git branch
  feature
* master

现在,存在着主分支(master)和功能分支(feature),确认了自己在主分支上。

接下来在master分支上创建文件并提交。

$ echo master > master.html
$ git add .
$ git commit -m 'create master.html'

在GitHub上随便创建一个存储库,将这些更改推送上去。

$ git remote add origin <URL>
$ git push origin master

接下来,切换到feature分支并创建新文件,然后进行提交和推送。

$ git checkout feature
Switched to branch 'feature'
$ echo feature > feature.html
$ git add .
$ git commit -m 'create feature.html'
[feature e980fc5] create feature.html
 1 file changed, 1 insertion(+)
 create mode 100644 feature.html
$ git push origin feature

最后在浏览器上打开GitHub,尝试切换分支。如果发现存在的文件在master和feature分支上有所不同,那就表示成功。

合并是指将两个或多个东西结合在一起形成一个整体的过程或动作。

将其他人的更改内容合并到工作中。具体来说,将两个分支合并为一个分支。

合并的类型

快进

 

当分支没有分叉时,一个分支会指向另一个分支。不会创建新的提交。

 

自动合并

 

当分支分叉时,会创建一个新的合并提交。合并提交有两个父提交。

 

冲突

 

当对同一文件的同一行进行不同编辑时等情况发生,无法解决应该优先选择哪个分支的状态。

合并

$ git merge <ブランチ名>
$ git merge <リモート名/ブランチ名>

让我们从实践分支开始继续下去。

# masterブランチに切り替える
$ git checkout master
# マージする
$ git merge feature
# ファイル一覧を見てみる
$ ls
feature.html  init.html  master.html

我可以确认master.html和feature.html同时存在。

冲突的解决

如果发生冲突,可以使用”git status”命令检查相关文件。打开文件后,会出现以下描述:

<<<<<<< HEAD
~
=============
~
>>>>>>> NEW

HEAD显示当前所在的分支。同时,NEW中输入的是将要合并的分支名称。

通过删除上述的描述并修正为正确的内容,然后提交新的版本,可以解决冲突。

预防冲突的措施

    • 複数人で同じファイルを変更しない

 

    • pullやmergeをする前に、commitやstashをしておく

 

    プルするときは、現在いるブランチを確認する

更改或删除分支

如果要更改当前分支的名称,

$ git branch -m <新ブランチ名>

若要删除分支,则:

$ git branch -d <ブランチ名>

# 未マージのブランチを強制削除する場合
$ git branch -D <ブランチ名>

分支的实际用途

将主分支保留为发布用,并创建一些主题分支进行开发。

bannerAds