253

プロジェクトにGitに2つ(またはそれ以上)の「オリジン」を含めることはできますか?

1つのプロジェクトをgithubHerokuサーバーの両方にプッシュしたいと思います。

具体的には、このエラーはgithubリポジトリを追加するときに表示されます。

$ git remote add origin https://github.com/Company_Name/repository_name.git
fatal: remote origin already exists.
4

9 に答える 9

366

リモコンはいくつでも持つことができますが、「origin」という名前のリモコンは1つしか持てません。「origin」と呼ばれるリモートは、既存のリポジトリのクローンを作成するときにGitによって作成されるデフォルトのリモートであることを除いて、特別なものではありません。2番目のリモートを構成し、そのリモートにプッシュ/プルし、オリジンではなくそのリモートからのブランチを追跡するようにいくつかのブランチを設定できます。

代わりに「github」というリモコンを追加してみてください。

$ git remote add github https://github.com/Company_Name/repository_name.git

# push master to github
$ git push github master

# Push my-branch to github and set it to track github/my-branch
$ git push -u github my-branch

# Make some existing branch track github instead of origin
$ git branch --set-upstream other-branch github/other-branch
于 2012-07-27T15:22:42.107 に答える
110

注目すべきは、オリジンを一度に複数のgitリポジトリサーバーにプッシュすることです。

これを実現するには、次のコマンドを使用して、オリジンリモートに別のURLを追加します。

git remote set-url --add origin ssh://git@bitbucket.org/user/myproject.git
于 2015-02-05T09:37:46.853 に答える
62

これは、複数のリモート、GitHubとGitLabを使用したサンプルプロジェクトです。

  1. GitHubのリモートリポジトリを追加する

    $ git remote add github https://github.com/Company_Name/repository_name.git
    
  2. GitLabのリモートリポジトリを追加する

    $ git remote add gitlab https://gitlab.com/Company_Name/repository_name.git
    
  3. これで、プロジェクトに複数のリモートがあります。で再確認してくださいgit remote -v

    $ git remote -v
    github https://github.com/Company_Name/repository_name.git (fetch)
    github https://github.com/Company_Name/repository_name.git (push)
    gitlab https://gitlab.com/Company_Name/repository_name.git (fetch)
    gitlab https://gitlab.com/Company_Name/repository_name.git (push)
    
  4. 複数のリポジトリにどのようにプッシュしますか?

    $ git push github && git push gitlab
    
于 2018-02-14T07:58:13.227 に答える
10
git remote set-url --add --push origin git@github.com:user/my-project.git
git remote set-url --add --push origin git@bitbucket.org:user/my-project.git

今、あなたは2つの起源を持っています。

于 2020-06-15T23:34:22.697 に答える
9

ローカルリポジトリは、複数のリモートリポジトリにリンクできます。

ただし、これらのリンクの1つだけを呼び出すことができますorigin残りのリンクには異なる名前を付ける必要があります。

したがって、この質問に適切に答えるためには、起源が何であるかを理解する必要があります。

例を挙げて説明しましょう。

remote repository呼び出されamazing-project、そのリモートリポジトリをローカルマシンに複製して、を作成するとしますlocal repository。次に、下の図に示すようなものがあります。

ここに画像の説明を入力してください

リポジトリのクローンを作成したためです。リモートリポジトリとローカルリポジトリはリンクされています。

コマンドを実行するgit remote -vと、ローカルリポジトリにリンクされているすべてのリモートリポジトリが一覧表示されます。ここで、リモートリポジトリからコードをプッシュまたはフェッチするために、短縮名「origin」 を使用することがわかります。ここに画像の説明を入力してください

さて、これは少し混乱するかもしれません。GitHub(またはリモートサーバー)では、プロジェクトは「amazing-project」と呼ばれているからです。では、なぜリモートリポジトリに2つの名前があるように見えるのでしょうか。

ここに画像の説明を入力してください

リポジトリに付けられている名前の1つは、GitHubまたはどこかのリモートサーバーにある名前です。これは、プロジェクト名のようなものです。そして私たちの場合、それは「amazing-project」です。

リポジトリに付けられているもう1つの名前は、リポジトリのURLに関連するローカルリポジトリにある短い名前です。これは、そのリモートリポジトリからコードをプッシュまたはフェッチするときに使用するショートネームです。そして、この短い名前の種類はURLのエイリアスのように機能します。これは、コードをプッシュまたはフェッチするために長いURL全体を使用する必要がないようにするための方法です。上記の例では、と呼ばれていoriginます。

それで、何originですか?

基本的に、originは、リモートリポジトリのクローンを作成するときにGitがリモートリポジトリに使用するデフォルトの短縮名です。したがって、これは単なるデフォルトです

多くの場合、ローカルリポジトリ内の複数のリモートリポジトリへのリンクがあり、それぞれに異なる短縮名が付けられます。

最後の質問ですが、同じ名前を使用しないのはなぜですか?

その質問に別の例で答えます。私たちのプロジェクトで私たちを助けてくれるように、私たちのリモートリポジトリをフォークする友人がいるとしましょう。そして、リモートリポジトリからコードをフェッチできるようにしたいとします。このコマンドを使用してgit remote add <shortname> <url>、ローカルリポジトリ内のリモートリポジトリへのリンクを追加できます。

ここに画像の説明を入力してください

上の画像ではfriend、友人のリモートリポジトリを参照するために短縮名を使用したことがわかります。また、両方のリモートリポジトリのプロジェクト名が同じamazing-projectであることがわかります。これは、リモートサーバーのリモートリポジトリ名とローカルリポジトリの短縮名が同じであってはならない理由の1つです。

ここ で見つけることができるこれらすべてを説明する本当に役立つビデオがあります。

于 2020-08-20T11:49:46.830 に答える
3

オリジンの代わりに別の名前を付けることで、リポジトリに別のリモートアカウントを追加できます。origin2などの名前を使用できます。したがって、gitコマンドは次のように変更できます。

git remote add origin2 https://github.com/Company_Name/repository_name.git
于 2019-01-28T17:58:12.907 に答える
2
git remote add origin2 https://github.com/Company_Name/repository_name.git

およびプッシュ使用の場合:

git push -u origin2 master
于 2019-08-21T07:55:25.837 に答える
1

オリジンの代わりにGitHubまたはGitLabを使用できます

オリジンの代わりにgithubの場合はgithubを使用します

git remote add github https://github.com/repository_name.git
git push github branchname

オリジンの代わりにgitlabを使用する場合はgitlabを使用します

git remote add gitlab https://github.com/repository_name.git
git push gitlab branchname
于 2021-07-01T14:29:42.850 に答える
1

次の手順に従って、既存のリポジトリから新しいリモートに変更をプッシュできます。

cd existing_repo

現在のリモートの名前を変更します(オプション)

git remote rename origin old-origin

新しいリモートを追加します(ここで使用されるオリジン)

git remote add origin https://github.com/repository_name.git

originこれで、コードを新しいリモコンにプッシュできます

git push -u origin --all
git push -u origin --tags
于 2021-07-29T13:57:49.660 に答える