あるブランチから別のブランチに変更をコミットしてプッシュすることは可能ですか?
BRANCH1で変更をコミットし、それらをBRANCH2にプッシュしたいとします。
BRANCH1から、次のことを行うのは有効ですか?
git push origin **BRANCH2**
そして、BRANCH1をリセットしますか?
あるブランチから別のブランチに変更をコミットしてプッシュすることは可能ですか?
BRANCH1で変更をコミットし、それらをBRANCH2にプッシュしたいとします。
BRANCH1から、次のことを行うのは有効ですか?
git push origin **BRANCH2**
そして、BRANCH1をリセットしますか?
それはほとんどうまくいくでしょう。
デフォルト以外のブランチにプッシュする場合は、ソース参照とターゲット参照を指定する必要があります。
git push origin branch1:branch2
または
git push <remote> <branch with new changes>:<branch you are pushing to>
確かに、それはBRANCH2の早送りであるか、強制した場合にのみ機能します。そのようなことをするための正しい構文は
git push <remote> <source branch>:<dest branch>
動作の詳細については、gitpushmanページの「refspec」の説明を参照してください。また、強制プッシュとリセットはどちらも「履歴を書き換える」操作であり、リモートリポジトリやその他のリポジトリに関して何をしているのかを確実に理解している場合を除いて、気の弱い人が試みるべきではないことにも注意してください。同じプロジェクトのフォーク/クローンを持っている人。
とても簡単です。ローカルとリモートの両方に存在するブランチ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
git push origin branch1:branch2
コマンドで悪い結果が出ました:
私の場合、branch2
は削除branch1
され、いくつかの新しい変更で更新されています。
branch2
したがって、からの変更のみをプッシュする場合はbranch1
、以下の手順を試してください。
branch1
:git add .
branch1
:git commit -m 'comments'
オンbranch1
:git push origin branch1
オンbranch2
:git pull origin branch1
オンbranch1
:前のコミットに戻ります。
コードを別のブランチにプッシュするときは、以下のgitコマンドに従ってください。デモは、ブランチ名に置き換えることができる他のブランチ名であることを忘れないでください。
git push origin master:demo
私の場合、ローカルコミットが1つありましたが、これはプッシュされませんでしたorigin\master
が、ローカルmaster
ブランチにコミットされました。このローカルコミットは、別のブランチにプッシュされるはずです。
Git Extensionsを使用すると、次のようなことができます。
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
@SLaksの答えの小道具、それは主に私のために働きます。しかし、枝が異なる頭を持っている場合。便利な方法は、チェリーピックを使用することです。
git log
-変更を加えたBranch1git checkout branch2
-変更を適用する場所git cherry-pick SHA_OF_COMMIT_FROM_STEP_2
あなたはこれを簡単に行うことができます
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.
終わり。
この質問の場合:コマンドは「
git push origin BRANCH1:BRANCH2
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
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