3

私がしなければならないこと: マスターに 10 個のコミットがあります。これらのコミットを新しいブランチに移動する必要があります。定期的にプルしていますが、まだプッシュしていません。10 個のコミットを新しいブランチにしてプッシュできるようにするにはどうすればよいですか?

こちらの質問の手順に従ってみましたが、うまくいきません。具体的には、リベースを行うと、最終的にマスターでコミットするだけで、新しいブランチではコミットしません。コミットが新しいブランチに移動されることはありません。質問で提供されている手順を考えると、それがどのように可能になるかわかりません。

4

3 に答える 3

2

私の理解から、これはあなたが持っているものです:

* commit 10 (master)
|
* commit 9
|
...
|              * (origin/master)
* commit 1     |
|.------------^
*

あなたが求めているのは、新しいブランチで 1 ~ 10 のコミットを行うことだと思います。

これを行うには、ブランチ名でブランチにラベルを付けてから、master を origin/master が持っているものにリセットします。

そう:

git checkout master # your current latest set of changes (commit 10)
git branch feature # the name of your branch
git reset --hard origin/master # sets master to point to origin/master
git pull --rebase # updates master with origin/master
git checkout feature && git merge master # updates feature branch with what is on origin/master

これは次のようになります。

* commit 11 (feature) merge commit
|^------------.
* commit 10    |
|              ...
...
|              * (master, origin/master)
* commit 1     |
|.------------^
*

これはあなたがやりたいことですか?

于 2013-06-04T17:29:21.530 に答える
0

ブランチの名前を変更してプッシュするだけです。

git branch -m branchname
git push -u branchname

ここ-uで追跡ブランチを更新することが重要です。

于 2013-06-04T17:38:01.420 に答える
0

1 つのオプションは、作業を新しいブランチにプッシュすることです。

git push HEAD:branchname

branchnameこれにより、サーバー上に新しいブランチが作成され、現在の作業が含まれます。- この場合、作業はローカル側のマスター上にあるため、混乱する可能性があります。

これを正しく行うには、ローカル マスターをリモート バージョンにリセットするだけです。

git reset --hard @{u}

これにより、コミットされていないすべてのチャンスが失われることに注意してください。

ブランチ名で作業するには、git checkout branchname.

于 2013-06-04T17:35:18.703 に答える