git://www.calatk.org/calatk.gitでgitリポジトリのクローンを作成する代わりに、C ++プロジェクトのソースコードをダウンロードしました。
このソースコード(git履歴なし)を使用して、gitリポジトリを作成し、しばらくの間コードに取り組み、すべての作業/ブランチをhttps://github.com/agirault/CalaTKのgithubにプッシュしました。
ここで、コードをcalatk.gitの元のgitリポジトリにマージするプルリクエストを作成したいと思います。
リポジトリに以前のコミットからのトラックがないので、どうすればこれを実行できるのか疑問に思いました。それ以降、calatk.orgのこのリポジトリは更新されていないはずです。つまり、最後のコミットは、githubで利用できる最初のコミットと同じになります。
公開されたGitHubリポジトリを、元のプロジェクトの履歴を含むリポジトリに置き換えてもかまわないと仮定して†、これが私が試すことです。
アップストリームリポジトリを2番目のリモートとして追加します。
git remote add upstream <clone-url>
アップストリームからフェッチ:
git fetch upstream
これにより、を含む新しいブランチポインタが生成されますupstream/master
。upstream/master
既存のコミットと履歴を共有しないでください。つまり、2つのルートコミットがあります。1つはアップストリームプロジェクトからのもので、もう1つはフォークからのものです。
作業をアップストリームコミットにリベースします(master
心配する必要があるだけだと仮定します)。
git checkout master
git rebase upstream/master
この時点で、ルートコミットは1つだけにする必要があります。1つはアップストリームプロジェクトからのものです。古いルートコミットのハッシュ(ルートコミットではなくなったはず3cee904
です)は、アップストリームプロジェクト()に表示されているものと一致する必要があります。
のようなものを使用git show 3cee904
して、コミットが正しいことを確認できます。
新しい履歴をGitHubに強制的にプッシュします。
git push --force origin master
貢献ガイドラインに従って、変更をアップストリームリポジトリに送信します。
GitHubまたはBitBucketにないため、プルリクエストを受け入れることができない可能性があります(これは独自の機能です)。git format-patch
ただし、プッシュアクセスまたは使用を要求できるはずです。アップストリームのメンテナはfetch
、パブリックGitHubリポジトリから取得することもできます。
†重要な注意: GitHubプロジェクトに共同編集者がいる場合、これは最善の選択肢ではない可能性があります。Gitで共有コミットを変更することは一般的に推奨されていません。あなたのGitHubリポジトリは事実上個人のリポジトリであるように思われるので、私はそれをお勧めします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加