Githubフォーク後、ソースリポジトリとの同期を維持します

独自のコードをGithubのオープンソースリポジトリに提供する場合、通常は最初にオープンソースコードリポジトリをフォークし、次にcloneローカルに移動して独自の変更を送信し、最後にプルリクエストをマージします。

オープンソースリポジトリには通常、多くの人が一緒にコードを提供しているため、これらのプロジェクトの貢献者とのコラボレーションを継続するには、非常に一般的な問題が発生します。ソースリポジトリとの同期を維持する方法は?

以下の手順に従って、Forkのソースウェアハウスとの同期を維持します。

リモートウェアハウスを構成する

  1. まず、現在構成されているリモートウェアハウスを確認します。これYOUR_USERNAMEは、Githubユーザー名とYOUR_FORKForkのウェアハウス名です。

    $ git remote -v
    > origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
    > origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
    
  2. 同期するようにアップストリームウェアハウス(つまり、Forkのソースウェアハウス)を構成ORIGINAL_OWNERします。これは、ソースウェアハウスの作成者のユーザー名とソースウェアハウスの名前ORIGINAL_REPOSITORYです。

    $ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
    
  3. 構成を確認します。upstream最初はリモートウェアハウスです。

    $ git remote -v
    > origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
    > origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
    > upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
    > upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)
    

フォークブランチを同期する

  1. アップストリームリポジトリからブランチとそれぞれのコミットを取得します。以下のためにBRANCHNAME提出ローカルブランチに格納されますupstream/BRANCHNAMEインチ

    $ git fetch upstream
    > remote: Counting objects: 75, done.
    > remote: Compressing objects: 100% (53/53), done.
    > remote: Total 62 (delta 27), reused 44 (delta 9)
    > Unpacking objects: 100% (62/62), done.
    > From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY
    >  * [new branch]      main     -> upstream/main
    
  2. ローカルのデフォルトブランチを切り替えます。これは、この例のmainブランチです。

    $ git checkout main
    > Switched to branch 'main'
    
  3. upstream/main変更をアップストリームのデフォルトブランチ(この場合は)からローカルのデフォルトブランチにマージします。

    $ git merge upstream/main
    > Updating a422352..5fdff0f
    > Fast-forward
    >  README                    |    9 -------
    >  README.md                 |    7 ++++++
    >  2 files changed, 7 insertions(+), 9 deletions(-)
    >  delete mode 100644 README
    >  create mode 100644 README.md
    

    この操作により、ローカルの変更を失うことなく、ローカルのデフォルトブランチがアップストリームリポジトリと同期されます。

    ローカルに個別のコミットがない場合、Gitは「早送り」操作を直接実行します。

    $ git merge upstream/main
    > Updating 34e91da..16c56ad
    > Fast-forward
    >  README.md                 |    5 +++--
    >  1 file changed, 3 insertions(+), 2 deletions(-)
    

プッシュ同期

上記の手順は、ウェアハウスのローカルコピーのみを同期します。GitHubの更新を同期するには、ローカルの変更をGithubオンラインウェアハウスにプッシュする必要もあります。

git push origin main

ローカルコピーをオンラインウェアハウスにプッシュすると、次のエラーが発生する場合があります。

$ git push origin main
To https://github.com/YOUR_USERNAME/YOUR_FORK.git
 ! [rejected]        main -> main (fetch first)
error: 推送一些引用到 'https://github.com/YOUR_USERNAME/YOUR_FORK.git' 失败
提示:更新被拒绝,因为远程仓库包含您本地尚不存在的提交。这通常是因为另外
提示:一个仓库已向该引用进行了推送。再次推送前,您可能需要先整合远程变更
提示:(如 'git pull ...')。
提示:详见 'git push --help' 中的 'Note about fast-forwards' 小节。

これは、リモートウェアハウスにローカルコピーに含まれていない提出物があることを意味します。実行する必要があるのは次の操作のみです。

$ git pull origin main

おすすめ

転載: blog.csdn.net/m0_55236025/article/details/114108855