回答:
それはほとんど機能します。
デフォルト以外のブランチにプッシュするときは、ソース参照とターゲット参照を指定する必要があります。
git push origin branch1:branch2
または
git push <remote> <branch with new changes>:<branch you are pushing to>
<remote>/<branch>
git push origin :branch2
現在のローカルブランチをリモートbranch2
にプッシュするだけだと思って実行しようとする人がいることに注意してください。代わりにリモートが削除されbranch2
ます。正しい方法はgit push origin HEAD:branch2
です。
確かに、それはBRANCH2の早送りであるか、強制した場合にのみ機能します。そのようなことをする正しい構文は
git push <remote> <source branch>:<dest branch>
動作の詳細については、git push manページの「refspec」の説明を参照してください。また、強制プッシュとリセットはどちらも「履歴を書き換える」操作であり、リモートリポジトリやその他のリポジトリに関して何をしているのかを完全に確信しているのでない限り、気の弱い人によって試みられるべきではないことに注意してください。同じプロジェクトのフォーク/クローンを持っている人。
git push --force remote local-branch:remote-branch
。
とても簡単です。ローカルとリモートの両方の場所にあるブランチAに変更を加えたが、これらの変更を、どこにも存在しないブランチBにプッシュしたいとします。
ステップ-01:新しいブランチBを作成してそれに切り替える
git checkout -b B
ステップ-02:新しいローカルブランチに変更を追加する
git add。//または特定のファイル
ステップ-03:変更をコミットする
git commit -m "commit_message"
ステップ-04:変更を新しいブランチBにプッシュします。以下のコマンドは、新しいブランチBもリモートで作成します
git push origin B
これで、ブランチBがブランチAよりも1つ多くコミットされることをbitbucketから確認できます。また、ブランチAをチェックアウトすると、ブランチBにプッシュされているため、これらの変更はありません。
注:変更をブランチAにコミットし、その後それらの変更を新しいブランチBにシフトする場合は、最初にそれらの変更をリセットする必要があります。#HappyLearning
私の場合、ローカルコミットが1つありましたが、これはにプッシュされませんorigin\master
でしたが、ローカルmaster
ブランチにコミットされました。このローカルコミットを別のブランチにプッシュする必要があります。
Gitの拡張あなたはこのような何かを行うことができます。
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
私は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
On branch1
:前のコミットに戻ります。
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にコミットし、変更を失うことなくこのコミットを取り除きたいですか? git resetが必要です。行う:
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
branch1
とbranch2
、リモート上にある必要がありますか?ローカルbranch1
からリモートにプッシュしたい場合はどうなりorigin branch2
ますか?