7

http://nvie.com/posts/a-successful-git-branching-model/で説明されているように、リポジトリでブランチを管理する git フローの方法を使用しています。

したがって、使用するコマンドのシーケンスは次のようになります。

git checkout mybranch
git pull --rebase origin develop
git checkout develop
git merge --no-ff mybranch

ただし、場合によっては、別の方法でやりたいことが 1 つあります。

機能ブランチ ( ) のすべてのコミットを保持したいのですが、mybranchにマージするときにそれらを 1 つの diff にまとめて (または押しつぶして)もらいたいと考えていますdevelop

したがって、これはコマンドのシーケンスが次のようになるべきだと私が考えるものです。

git checkout mybranch
git pull --rebase origin develop
git checkout develop
git merge --no-ff --squash mybranch

--no-ffと組み合わせると、間違ったことをする--squashでしょうか?

これを試すのをためらっているのは、「スカッシング」と「履歴の保存」がどのように直交する要件であるかに起因します-履歴を変更せずにすべてのコミット (マージを含む) を 1 つのコミットにスカッシングするを参照してください

mybranch私の理論的根拠は、あるブランチ ( ) で履歴を保存し、別のブランチ ( ) で suqashを保存したいということですdevelop--> これらのアクションは別々のブランチで実行されるため、これで問題ありません。

4

1 に答える 1

0

--squash と --no-ff を組み合わせてみたところ、次のようになりました。

fatal: You cannot combine --squash with --no-ff.

git マージは基本的にスカッシュです。競合を解決した後、開発時に 1 つのコミットとして表示されます。マージ リビジョンの差分は、競合解決の結果です。はい、mybranch の変更は保持されます。確認するには、マージ後に「gitk mybranch &」を実行するだけです。

その上、影は正しいです。恐れることはありません。新しいブランチを作成し、いろいろ試して結果を確認してください。

「git pull --rebase origin development」コマンドで被害が発生しました。

回答 (オリジン/開発に基づくローカルの開発ブランチがあると仮定します):

git checkout develop
git pull
git merge --no-ff mybranch
于 2013-05-30T04:31:17.557 に答える