2

「開発」と「マスター」の有効期間が無制限であるため、GitHubリモートの「origin/develop」ブランチをリモートの「origin/master」にマージしてタグ付けするための最良のワークフローは、リモートの「master」がリモートの「develop」よりも先に進むことはありません。 ?

ファイル(readme)を更新し、「マスター」にタグを付けるためのシナリオ...

すべてが同意します...

$ git log develop ^master
$ git log master ^develop
$ git log master ^origin/master
$ git log master ^origin/develop
$ git log develop ^origin/develop
$ git log develop ^origin/master

「開発」に切り替えます...

**$ git branch**
* develop
  master

README.mdファイルを編集します。

ローカルリポジトリにコミットします...

**$ git commit -a**
[develop 47c8393] Updated branching model
 1 file changed, 18 insertions(+), 6 deletions(-)
 rewrite README.md (81%)

「開発」をリモート「開発」にプッシュします。

**$ git push origin develop**
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 745 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To git@github.com:xxx/xxx.git
   038cb2b..47c8393  develop -> develop

'マスター'に切り替えます...

**$ git checkout master**
Switched to branch 'master'

「開発」を「マスター」にマージします。

**$ git merge --no-ff develop**
Merge made by the 'recursive' strategy.
 README.md | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

タグ'マスター'..。

**$ git tag -a v3.0.2**

「マスター」をリモートの「マスター」にプッシュします。

**$ git push --tags origin master**
Counting objects: 2, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 442 bytes, done.
Total 2 (delta 0), reused 0 (delta 0)
To git@github.com:xxx/xxx.git
   038cb2b..5750fa7  master -> master
 * [new tag]         v3.0.2 -> v3.0.2

GitHubは、リモートの「マスター」がリモートの「開発」(マージ)より1つ進んでいることを報告するようになりました。彼らは同意するべきではありませんか?...

**$ git log origin/master ^origin/develop**
commit 5750fa78ff81f41ef2327c2f4595f98c0413e245
Merge: 038cb2b 47c8393
Author: 
Date:   

Merge branch 'develop'

「マスター」が「開発」にマージされた場合、HEADは「開発」を指しますが、これは問題ですか?新しい「開発」を新しい「マスター」から分岐させる必要がありますか(「開発」の無制限の有効期間をサポートしていません)?

4

2 に答える 2

2

gitでは、マージ/リベースはローカルで行われるため、2つのリモコンを一致させたい場合は、最初にローカルで一致させる必要があります。

git merge --no-ff developマスターでコマンドを作成するmasterと、上のすべてのコミットを含む新しいコミットが作成されdevelopます。この新しいコミットは、にコミットが1つしかない場合でも、masterのどのコミットとも同じではありません。developdevelop

を使用--no-ffすると、常に新しいコミットが作成されるため、ブランチが常に異なることが保証されます。コミットを組み合わせる場合は、方法に関係なく、同じことが当てはまります。

ブランチを同じように維持したい場合は、(Gitのリベースワークフローgit rebase)のように、の代わりにを使用するワークフローを調べてください。git merge

于 2013-03-24T19:19:18.820 に答える
0

ローカルブランチをマージして、結果をプッシュする必要があります。つまり、開発をマスターにマージします。ローカルブランチを台無しにしたくない場合は、このためだけにブランチを作成し、プッシュバックをマージして、それらを削除します。または、このためだけにクローンを作成することもできます。

于 2013-03-24T17:24:25.733 に答える