git 基于发布分支的开发

创建发布分支:

(1) 软件hello-world的1.0发布版本库中有一个里程相对应.

/home/jackluo/workspace/user1/workspace/hello-world
git tag -n1 -l v*

(2)基于里程v1.0创建发布布hello-1.x.

   注:使用了git checkout 命令创建分支,最后一个参数v1.0是新分支 hello-1.x创建的基准点,如果没有里程,使用提交ID也是一样

[root@localhost hello-world]# git tag -n1 -l v*
v1.0            Release 1.0
[root@localhost hello-world]# git checkout -b hello-x.x v1.0
切换到一个新分支 'hello-x.x'

(3)用git rev-parse 命令可以看到hello-1.x分支对应的提交ID和里程v1.0指向的提交一致,但是和master不一样

   提示:因为里程v1.0是一个包含提交说明的里程,因此为了显示其对应的提交ID,使用特别的记法 "v1.0^{}".

[root@localhost hello-world]# git rev-parse hello-x.x v1.0^{} master
d901dd8170f67fec607828905d5fbd91e3272400
d901dd8170f67fec607828905d5fbd91e3272400
733dcf67eba976a61d0dc6396c9d23cb23568591

(4)开发者user1将分支hello-1.x推送到远程 共享版本库,因为开发者user2修改Bug时也要用到该分支

[root@localhost hello-world]# git push origin hello-x.x
Total 0 (delta 0), reused 0 (delta 0)
To /home/jackluo/workspace/repos/hello-world.git
 * [new branch]      hello-x.x -> hello-x.x

(5).开发者user2 从远程共享版本库获取新的分支。

    开发者user2执行git fetch命令,将远程共享版本库的新分支hello-1.x复制到本地引用origin/hello-1.x上.

[root@localhost hello-world]# cd ../../../user2/workspace/hello-world/
[root@localhost hello-world]# git fetch
remote: Counting objects: 22, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 4 (delta 3), reused 1 (delta 1)
Unpacking objects: 100% (4/4), done.
来自 /home/jackluo/workspace/repos/hello-world
 * [新分支]          hello-x.x  -> origin/hello-x.x
   d901dd8..733dcf6  master     -> origin/master

(6).开发者user2切换到hello-x.x分支.

[root@localhost hello-world]# git checkout -b hello-x.x origin/hello-x.x
分支 hello-x.x 设置为跟踪来自 origin 的远程分支 hello-x.x。
切换到一个新分支 'hello-x.x'

(1)编辑文件src/main.c,将"--help"字符串修改为"--help".

[root@localhost hello-world]# cd ../../../user1/workspace/hello-world/
[root@localhost hello-world]# vim src/main.c

(2)开发者user1的改动可以从下面的差异比较中看到.

[root@localhost hello-world]# git diff

(3) 执行提交

[root@localhost hello-world]# git add -u
[root@localhost hello-world]# git commit -m "Fix typo: -help to --help."
[hello-x.x ca43043] Fix typo: -help to --help.
 1 file changed, 2 insertions(+), 2 deletions(-)

(4).推送到远程共享版本库.

[root@localhost hello-world]# git push
warning: push.default 未设置,它的默认值将会在 Git 2.0'matching'
修改为 'simple'。若要不再显示本信息并在其默认值改变后维持当前使用习惯,
进行如下设置:

  git config --global push.default matching

若要不再显示本信息并从现在开始采用新的使用习惯,设置:

  git config --global push.default simple

参见 'git help config' 并查找 'push.default' 以获取更多信息。
('simple' 模式由 Git 1.7.11 版本引入。如果您有时要使用老版本的 Git,
为保持兼容,请用 'current' 代替 'simple' 模式)

Counting objects: 20, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 362 bytes | 0 bytes/s, done.
Total 4 (delta 3), reused 0 (delta 0)

开发者user2工作在发布分支.

 (1)进入开发者user2的工作区,并确保工作在hello-x.x分支中

[root@localhost hello-world]# cd ../../../user2/workspace/hello-world/
[root@localhost hello-world]# git checkout hello-x.x
已经位于 'hello-x.x'

(2)编辑文件 src/mai.c,修改代码中的Bug.

[root@localhost hello-world]# vim src/main.c 
[root@localhost hello-world]# git format-path jx/v1.1..jx/v1.2
git:'format-path' 不是一个 git 命令。参见 'git --help'。

您指的是这个么?
    format-patch
[root@localhost hello-world]# git format-patch jx/v1.1..jx/v1.2
0001-Bugfix-allow-spaces-in-username.patch
[root@localhost hello-world]# patch -p1 < 0001-Bugfix-allow-spaces-in-username.patch
patching file src/main.c
[root@localhost hello-world]# git diff
[root@localhost hello-world]# cd src/
[root@localhost src]# ll
总用量 12
-rw-r--r-- 1 root root 946 1月   2 14:48 main.c
-rw-r--r-- 1 root root 474 12月 30 20:39 Makefile
-rw-r--r-- 1 root root  98 12月 30 20:39 version.h.in
[root@localhost src]# make
version.h.in => version.h
cc    -c -o main.o main.c
cc -o hello main.o
[root@localhost src]# ./hello Jack Luo
Hi, Jack Luo.
(version: v1.0-dirty)
[root@localhost src]# git add -u
[root@localhost src]# git commit -m "Bugfix: allow spaces in username."
[hello-x.x 0ad2a9e] Bugfix: allow spaces in username.
 1 file changed, 8 insertions(+), 1 deletion(-)

开发者user2合并推送

     开发者user2在本地版本完成提交后,

[root@localhost src]# git pull
Already up-to-date.
[root@localhost src]# git log --graph --oneline
[root@localhost src]# cd ..
[root@localhost hello-world]# git checkout master
切换到分支 'master'
您的分支落后 'origin/master'1 个提交,并且可以快进。
  (使用 "git pull" 来更新您的本地分支)
[root@localhost hello-world]# git pull
更新 d901dd8..733dcf6
Fast-forward
 src/Makefile |  3 ++-
 src/main.c   | 41 ++++++++++++++++++++++++++++++++++++-----
 2 files changed, 38 insertions(+), 6 deletions(-)
[root@localhost hello-world]# git pull
Already up-to-date.
[root@localhost hello-world]# git push
Everything up-to-date
[root@localhost hello-world]# git checkout master
已经位于 'master'

发布分支的提交合并到主线.

1.操作

查看分支 hello-1.x的日志,确认要提交的ID.

  从下面的日志中可以看出分支hello-1.x 的最新提交是一个合并提交,可以分别用"hello-1.x^1和"hello-1.x^2"表示

[root@localhost hello-world]# git pull
Already up-to-date.
[root@localhost hello-world]# git log -3 --graph --oneline hello-x.x
*   9cc4e7b Merge branch 'hello-x.x' of /home/jackluo/workspace/repos/hello-worl
|\  
| * ca43043 Fix typo: -help to --help.
* | 0ad2a9e Bugfix: allow spaces in username.

(5)操作发生冲突,通过查看状态可以看到是在文件src/main.c上发生了冲突.

[root@localhost hello-world]# git status
# 位于分支 master
# 您正在做拣选操作。
#   (解决冲突并运行 "git cherry-pick --continue")
#   (使用 "git cherry-pick --abort" 以取消拣选操作)
#
# 未合并的路径:
#   (使用 "git add <file>..." 标记解决方案)
#
#    双方修改:     src/main.c
#
# 未跟踪的文件:
#   (使用 "git add <file>..." 以包含要提交的内容)
#
#    0001-Bugfix-allow-spaces-in-username.patch
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
[root@localhost hello-world]# git status
# 位于分支 master

2.冲突发生的原因,通过下面的命令可以看到底是哪些提交引起的冲突.

[root@localhost hello-world]# git log master...hello-x.x^1
commit 0ad2a9e90213aca2d882ba6fa49d4667db5e2106
Author: user2 <user2@sun.ossxp.com>
Date:   Thu Jan 2 14:51:14 2014 +0800

    Bugfix: allow spaces in username.

commit 733dcf67eba976a61d0dc6396c9d23cb23568591
Author: user1 <user1@sun.ossxp.com>
Date:   Thu Jan 2 11:34:45 2014 +0800

    Refactor: use getopt_long for arguments parsing.

3.冲突解决

 

 

转载于:https://www.cnblogs.com/jackluo/p/3501709.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值