63
63
64
64
## 2. 建议的工作流
65
65
66
- 基于以上原因, 我们将 [ 功能分支工作流] ( https://www.atlassian.com/git/tutorials/comparing-workflows#feature-branch-workflow ) , [ 交互式变基的使用方法] ( https://www.atlassian.com/git/tutorials/merging-vs-rebasing#the-golden-rule-of-rebasing ) 结合一些 [ Gitflow] ( https://www.atlassian.com/git/tutorials/comparing-workflows#gitflow-workflow ) 中的基础 (比如,命名和使用一个 develop branch)一起使用。 主要步骤如下:
66
+ 基于以上原因, 我们将 [ 功能分支工作流] ( https://www.atlassian.com/git/tutorials/comparing-workflows#feature-branch-workflow ) , [ 交互式变基的使用方法] ( https://www.atlassian.com/git/tutorials/merging-vs-rebasing#the-golden-rule-of-rebasing ) 结合一些 [ Gitflow] ( https://www.atlassian.com/git/tutorials/comparing-workflows#gitflow-workflow ) 中的基础功能 (比如,命名和使用一个 develop branch)一起使用。 主要步骤如下:
67
+
68
+ ### 2.1 项目初始建立` master ` and ` develop ` 二个分支
67
69
68
70
- 针对一个新项目, 在 github 上创建项目的 repo,用 github 界面创建 ` develop ` 开发分支, ` clone ` 到本地后,只基于开发分支做开发:
69
71
@@ -72,6 +74,8 @@ git clone <项目地址> # clone the remote repository
72
74
git checkout develop # set the develop branch as the current branch
73
75
```
74
76
77
+ ### 2.2 创建功能分支做具体开发
78
+
75
79
- 检出(Checkout) 一个新的功能或故障修复(feature/bug-fix)分支。同步到 Github, 随时用 ` git branch -a ` 检查当前分支状态:
76
80
77
81
``` sh
@@ -80,28 +84,31 @@ git push -u origin my-feature-branch # sync to remote server
80
84
git branch -a # display branch status
81
85
```
82
86
83
- - 在功能分枝上进行新功能的开发,与代码提交 。
87
+ - 在功能分枝上进行新功能的开发,提交代码并同步到远程 Git 服务器 。
84
88
85
89
``` sh
86
90
git add . # Add all local changes
87
91
git commit -a # commit all changes
92
+ git push # push to remote frequently to bakcup changes
88
93
```
89
94
90
95
为什么
91
96
92
- > ` git commit -a ` 会独立启动一个编辑器用来编辑您的说明信息,这样的好处是可以专注于写这些注释说明。请参考下面关于说明信息的要求。
97
+ > ` git commit -a ` 会独立启动一个编辑器用来编辑您的说明信息,这样的好处是可以专注于写这些注释说明。请参考下面关于说明信息的要求。经常同步到远程库做备份。通常在 IDE 里执行上面三个操作也可以,注意当前分支为功能分支就好。
98
+
99
+ ### 2.3 合并功能分支到` develop ` 分支
93
100
94
- - 在准备提交合并前, 先将需要 merge 到的分支更新到最新,例如要将功能分支 merge 到 develop,那么需要更新 develop 到最新
101
+ - 1) 在准备提交合并前, 先将需要 merge 到的分支更新到最新,例如要将功能分支 merge 到 develop,那么需要更新 develop 到最新。下面的步骤建议手工运行。
95
102
96
103
``` sh
97
- git pull develop # 如果是master的hotfix,需要从master同步。
104
+ git pull develop
98
105
```
99
106
100
107
为什么
101
108
102
109
> 当您进行(稍后)变基操作的时候,保持更新会给您一个在您的机器上解决冲突的机会。这比(不同步更新就进行下一步的变基操作并且)发起一个与远程仓库冲突的合并请求要好。
103
110
104
- - 切换至功能分支,merge <相关分支>到功能分支,并采用` rebase -i --autosquash ` 的方式进行 merge
111
+ - 2) 切换至功能分支,merge <相关分支>到功能分支,并采用` rebase -i --autosquash ` 的方式进行 merge
105
112
106
113
``` sh
107
114
git checkout my-feature
@@ -119,7 +126,7 @@ git add <file1> <file2> ...
119
126
git rebase --continue
120
127
```
121
128
122
- - 推送您的(功能)分支到 github。变基操作会改变提交历史, 所以您必须使用 ` -f ` 强制推送到远程(功能)分支。 如果其他人与您在该分支上进行协同开发,请使用破坏性没那么强的 ` --force-with-lease ` 参数。
129
+ - 3)推送您的功能分支到 github。变基操作会改变提交历史, 所以您必须使用 ` -f ` 强制推送到远程(功能)分支。 如果其他人与您在该分支上进行协同开发,请使用破坏性没那么强的 ` --force-with-lease ` 参数。
123
130
124
131
``` sh
125
132
git push -f
@@ -129,9 +136,9 @@ git push -f
129
136
130
137
> 当您进行 rebase 操作时,您会改变功能分支的提交历史。这会导致 Git 拒绝正常的 ` git push ` 。那么,您只能使用 ` -f ` 或 ` --force ` 参数了。[ 更多请阅读...] ( https://developer.atlassian.com/blog/2015/04/force-with-lease/ )
131
138
132
- - 提交一个合并请求(Pull Request)。
133
- - Pull Request 会被负责代码审查的同事接受,合并和关闭。
134
- - 如果您完成了开发,请记得删除您的本地分支 。
139
+ - 4) 提交一个合并请求(Pull Request)。Pull Request 会被负责代码审查的同事接受,合并和关闭。合并请求完成同时需要删除远程的功能分支。这些操作都利用 github 的用户界面进行 。
140
+
141
+ - 5)合并完成后,记得删除您的本地分支 。
135
142
136
143
``` sh
137
144
git branch -d < 分支>
@@ -143,6 +150,16 @@ git branch -d <分支>
143
150
git fetch -p && for branch in ` git branch -vv | grep ' : gone]' | awk ' {print $1}' ` ; do git branch -D $branch ; done
144
151
```
145
152
153
+ 命令太长,建议在` .bash_profile ` 创建一个` alias ` :
154
+
155
+ ``` sh
156
+ alias syncBranch=' git fetch -p && for brach in `git branch -vv | grep ": gone]" | awk "{print $1}"`; do git branch -D $branch; done'
157
+ ```
158
+
159
+ ### 2.4 开发分支发布到` master ` 分支
160
+
161
+ TODO.
162
+
146
163
## 3 如何写好 Commit Message
147
164
148
165
坚持遵循关于提交的标准指南,会让在与他人合作使用 Git 时更容易。这里有一些经验法则 ([ 来源] ( https://chris.beams.io/posts/git-commit/#seven-rules ) ):
0 commit comments