Git对分支的操作

分支的操作

啥是分支,比如老师留了作业让做一个系统,我懒的自己做,就和别人要了一份,但还不能完全用别人的,需要自己改改,但又怕自己没改成功,把给的那份也弄坏了。为了防止自己改错了还不能反悔。可以要过来别人的程序之后,先复制一份,在复制的这份中做改动,改坏了,大不了再复制一份。复制的这个就可以叫做分支,比喻可能不太恰当,git中的分支要比这强大,但大概就是这么个意思。

现在我把gitTest中的东西全删了包括那个.git文件。

初始化仓库git init,新建一个a.txt,在里边写个a,执行git add a.txt,然后执行git commit -m ‘add a.txt’

现在创建分支dev然后切换到dev分支

YZ@YZ MINGW64 /d/gitTest (master)
$ git branch dev

YZ@YZ MINGW64 /d/gitTest (master)
$ git checkout dev
Switched to branch 'dev'

上面两条命令可以用一条命令代替,git checkout -b dev。git checkout命令加上-b参数表示创建并切换。

使用git branch查看当前分支

$ git branch
* dev
  master

git branch命令会列出所有分支,当前分支前面会标记一个*号。

然后我们就可以在dev分支上正常提交,我在a.txt中另起一行写个b,然后执行git add a.txt,然后执行 git commit -m ‘branch test’。现在dev分支的工作完成,切换到master分支。

$ git checkout master
Switched to branch 'master'

会发现我在a.txt中添加的b没有了。a.txt文件仍然保持原先的状态,并没有添加b。dev分支的更改不会影响到master分支,这正是在开发中创建分支的优点。只要创建分支,就可以在不互相影响的情况下同时进行多个功能的开发。

现在,我们切换到dev分支

$ git checkout -
Switched to branch 'dev'

上面用“-”代替分支名,就可以切换至上一个分支。当然,将“-”替换成dev同样可以切换成dev分支。切换到dev分支后就会看到里边有b了。

我们假设dev分支已经是实现完毕,想要将它合并到主干分支master。首先切换到master分支

$ git checkout master
Switched to branch 'master'

然后把dev分支的工作成果合并到master上,为了在历史记录中明确记录下本次分支合并,我们需要创建合并提交。因此,在合并时加上–no-ff参数。如果啥参数都不加的话为Fast forward模式,这个模式下不会把这次操作记录下来,也就不用写备注了,但不推荐这样做。–no-ff的意思就是禁用Fast forward模式。

$ git merge --no-ff dev

随后编辑器会启动,用于录入合并提交的信息。刚进去的时候不能编辑,因为此时是命令模式,输入i就会进入到编辑模式,就可以编辑内容了。编辑完成后,按下Esc,退回命令模式。然后输入冒号:进入底行模式,在底行模式下输入wq代表写入内容并退出,即保存。输入q!代表强制退出不保存。

因为默认信息中已经包含了Merge branch ‘dev’这样的相关信息,可不必做任何更改。将编辑器中显示的内容保存,关闭编辑器。然后就会看到。

如果就想写一句话的可以加一个参数-m,git merge –no-ff -m “Merge branch dev” dev

Merge made by the 'recursive' strategy.
 a.txt | 1 +
 1 file changed, 1 insertion(+)

这样一来,dev分支的内容就合并到master分支中了。

git log –graph,这条命令可以以图形的方式来查看日志,非常直观。

$ git log --graph
*   commit 2eb7668305c3cda852d49ec7636346992990e51c (HEAD -> master)
|\  Merge: c939f6d 952616a
| | Author: eaglezsx <[email protected]>
| | Date:   Sun Aug 27 19:35:54 2017 +0800
| |
| |     Merge branch 'dev'
| |
| * commit 952616a9e5091441c13218d8fc0fe69caac3f840 (dev)
|/  Author: eaglezsx <[email protected]>
|   Date:   Sun Aug 27 19:35:14 2017 +0800
|
|       branch test
|
* commit c939f6d9ae81cd758725289e9fd9bd8c190e7d30
  Author: eaglezsx <15732621728@163.com>
  Date:   Sun Aug 27 19:34:04 2017 +0800

      add a.txt

可以清楚的看到dev提交的东西已被合并。除此以外,分支的创建以及合并也都清楚明了。

合并完后,就可以放心的删除dev分支了

$ git branch -d dev
Deleted branch dev (was 952616a).

删除后查看branch,就只剩下master分支了

$ git branch
* master

猜你喜欢

转载自blog.csdn.net/zsx157326/article/details/80059156