539

あるブランチから別のブランチに変更をコミットしてプッシュすることは可能ですか?

BRANCH1で変更をコミットし、それらをBRANCH2にプッシュしたいとします。

BRANCH1から、次のことを行うのは有効ですか?

git push origin **BRANCH2**

そして、BRANCH1をリセットしますか?

4

11 に答える 11

978

それはほとんどうまくいくでしょう。

デフォルト以外のブランチにプッシュする場合は、ソース参照とターゲット参照を指定する必要があります。

git push origin branch1:branch2

または

git push <remote> <branch with new changes>:<branch you are pushing to> 
于 2012-12-16T01:23:59.627 に答える
87

確かに、それはBRANCH2の早送りであるか、強制した場合にのみ機能します。そのようなことをするための正しい構文は

git push <remote> <source branch>:<dest branch> 

動作の詳細については、gitpushmanページの「refspec」の説明を参照してください。また、強制プッシュとリセットはどちらも「履歴を書き換える」操作であり、リモートリポジトリやその他のリポジトリに関して何をしているのかを確実に理解している場合を除いて、気の弱い人が試みるべきではないことにも注意してください。同じプロジェクトのフォーク/クローンを持っている人。

于 2012-12-16T01:15:04.123 に答える
30

とても簡単です。ローカルとリモートの両方に存在するブランチAに変更を加えたが、これらの変更をどこにも存在しないブランチBにプッシュしたいとします。

ステップ-01:新しいブランチBを作成して切り替えます

git checkout -b B

ステップ-02:新しいローカルブランチに変更を追加します

gitadd。//または特定のファイル

ステップ-03:変更をコミットします

git commit -m "commit_message"

ステップ-04:変更を新しいブランチBにプッシュします。以下のコマンドは、新しいブランチBもリモートで作成します

git push origin B

これで、bitbucketから、ブランチBがブランチAよりもコミットが1つ多いことを確認できます。また、ブランチAをチェックアウトする場合、これらの変更はブランチBにプッシュされているため、そこにはありません。

注:ブランチAに変更をコミットし、その後、それらの変更を新しいブランチBにシフトする場合は、最初にそれらの変更をリセットする必要があります。#HappyLearning

于 2018-11-20T07:28:10.583 に答える
5

git push origin branch1:branch2コマンドで悪い結果が出ました:

私の場合、branch2は削除branch1され、いくつかの新しい変更で更新されています。

branch2したがって、からの変更のみをプッシュする場合はbranch1、以下の手順を試してください。

  • オンbranch1git add .
  • オンbranch1git commit -m 'comments'
  • オンbranch1git push origin branch1

  • オンbranch2git pull origin branch1

  • オンbranch1:前のコミットに戻ります。

于 2018-10-28T08:18:20.787 に答える
4

コードを別のブランチにプッシュするときは、以下のgitコマンドに従ってください。デモは、ブランチ名に置き換えることができる他のブランチ名であることを忘れないでください。

git push origin master:demo
于 2020-07-03T17:57:12.240 に答える
3

私の場合、ローカルコミットが1つありましたが、これはプッシュされませんでしたorigin\masterが、ローカルmasterブランチにコミットされました。このローカルコミットは、別のブランチにプッシュされるはずです。

Git Extensionsを使用すると、次のようなことができます。

  • (存在しない場合は作成し、)コミットをプッシュする新しいブランチをチェックアウトします。
  • 履歴からコミットを選択します。これにより、コミットされてこのブランチにプッシュされます。
  • 右クリックして、Cherrypickcommitを選択します。
  • その後、チェリーピックボタンを押します。
  • 選択したコミットは、チェックアウトされたブランチに適用されます。次に、コミットしてプッシュします。
  • コミットに誤りがある古いブランチをチェックしてください。
  • このブランチを最後から2番目のコミットにハードリセットします。ここですべてが正常でした(ここで何をしているのか注意してください)。これを行うには、最後から2番目のコミットを右クリックして、[現在のブランチをここにリセット]を選択します。自分が何をしているのかがわかっている場合は、操作を確認してください。

GITコマンドラインでも同じことができます。David Christensenからコピーした例:

git cherry-pick+git resetの方がはるかに高速なワークフローであることがわかると思います。

同じシナリオを使用すると、「機能」がブランチであり、最上位のコミットが正しくないため、これを行う方がはるかに簡単です。

git checkout master
git cherry-pick feature
git checkout feature
git reset --hard HEAD^

かなりの作業を節約git cherry-pick し、処理するように設計されたシナリオです。

また、これは最上位のコミットでない場合にも機能することに注意してください。チェリーピックへの議論には、次の方法でコミットする必要があります。

git checkout master
git cherry-pick $sha1
git checkout feature
git rebase -i ... # whack the specific commit from the history

于 2018-02-21T11:22:35.393 に答える
2

@SLaksの答えの小道具、それは主に私のために働きます。しかし、枝が異なる頭を持っている場合。便利な方法は、チェリーピックを使用することです。

  1. git log-変更を加えたBranch1
  2. 変更のコピーコミットSHA
  3. git checkout branch2-変更を適用する場所
  4. git cherry-pick SHA_OF_COMMIT_FROM_STEP_2
于 2021-11-25T11:37:46.610 に答える
1

あなたはこれを簡単に行うことができます

git status
git add .
git commit -m "any commit"
git pull origin master 
git push origin master:development # assuming 'development' is the target branch name.
于 2019-10-23T07:14:53.243 に答える
0
  1. BRANCH1で変更をコミットします。
  2. ターミナルを開き、コマンドを入力します-> "git push <remote_name> <branch1_name>:<branch2_name>"

終わり。

この質問の場合:コマンドは「

git push origin BRANCH1:BRANCH2
于 2021-11-06T10:45:14.503 に答える
-1

git init 
#git remote remove origin
git remote add origin  <http://...git>
echo "This is for demo" >> README.md 
git add README.md
git commit -m "Initail Commit" 
git checkout -b branch1 
git branch --list
****add files***
git add -A
git status
git commit -m "Initial - branch1"
git push --set-upstream origin branch1
#git push origin --delete  branch1
#git branch --unset-upstream  

于 2020-02-14T02:11:09.107 に答える
-4

BRANCH1にコミットし、変更を失うことなくこのコミットを削除したいですか? gitresetはあなたが必要とするものです。行う:

git branch BRANCH2

BRANCH2を新しいブランチにしたい場合。必要に応じて、これを最後に別のブランチとマージすることもできます。BRANCH2がすでに存在する場合は、このステップを省略します。

次に、次のことを行います。

git reset --hard HEAD~3

コミットしたブランチのコミットをリセットしたい場合。これにより、最後の3つのコミットの変更が行われます。

次に、次の手順を実行して、リセットされたコミットをBRANCH2に移動します。

git checkout BRANCH2

このソースは役に立ちました: https ://git-scm.com/docs/git-reset#git-reset-Undoacommitmakingitatopicbranch

于 2018-11-02T05:55:13.707 に答える