3

GitHubで使用しているリポジトリがあります。以前は、リポジトリには1つのブランチ(つまりマスター)しかなく、リモートリポジトリで完全に最新でしたが、新しい実験作業の2つのローカルコミットを実行した後、私がやりたいのは新しいブランチを作成することであると判断しました。これらの2つは、代替ブランチとしてGitHubで引き続きアクセスできる「dev」ブランチでコミットします。

したがって、私は次のことを行いました。

git branch dev             # create new branch
git reset --hard HEAD~2    # roll back 2 commits on HEAD
git checkout dev           # make dev the active branch

地元では、すべてが今は良いです。私は今、2つのローカルブランチを持っています:(masterこれは2つのコミットが遅れています-安定したバージョンでは)そしてdev (HEAD)これは現在の実験的な作業です。

ただし、GitHub側では、すべてがうまくいきません。2つのブランチがmaster (HEAD)ありdevますが、どちらもまったく同じですmaster(つまり、 実際にはブランチにのみ必要なのに、最新の2つのコミットはブランチにありますdev)。

要約すると、最新の不安定なコミット(dev work)、コミット10、および安定したコミット番号8を呼び出すと、次のようになります。

10 - dev、、、、origin/master_origin/devorigin/HEAD

9

8--master

したがって、問題は、どのようにorigin/masterして8をコミットするように正しく指示するかです(そしてorigin/HEAD、このすべてにおける役割に混乱しています...)

4

1 に答える 1

2

の履歴を変更する場合は、 GitHubにマスターの新しいHEADを記録させるために変更masterする必要があります。git push -f origin master(その変更について協力者に警告するようにしてください。彼らはローカルマスターブランチをその新しいHEADにリセットする必要があります)。
押すdevだけでは不十分でした。

origin/HEADHEADリモートGitHubリポジトリのを参照します( origin/masterGitHubリポジトリ管理インターフェースを介して明示的に変更した場合を除き、そうする必要があります)。

于 2012-09-04T12:49:50.303 に答える