Git リポジトリのアップストリームを同じリポジトリのローカル クローンとして設定できますか?

Git リポジトリのアップストリームを同じリポジトリのローカル クローンとして設定できますか?

(Repo 1)にリポジトリが 1 つあります/home/user/reponame。このリポジトリを (Repo 2) にクローンしました/tmp/reponame。Repo 1 のアップストリーム リポジトリを Repo 2 に変更することは可能ですか?

他の質問ではブランチを提案していますが、ここで探しているのはそれではありません。ブランチを実行するとgit checkout -b test --track /tmp/reponame/master、エラーが発生します/tmp/reponame/master is outside repository

答え1

Git では、リポジトリ全体の設定に「アップストリーム」という用語を使用しません。Git 用語では、アップストリームがあるのは個々のブランチのみで、その目的は などのコマンドのショートカット/デフォルトとして使用することであるため、他のブランチにのみ設定できますgit merge <otherbranch>。(git checkoutコマンドも、ブランチの操作を中心に構築されています。)

代わりに、おそらくあなたが探しているのは「リモコン」はリポジトリの URL を保存します。すべての新しいクローンでは、そのソース URL が という名前のリモートに保存されますorigin。したがって、リポジトリ 1 をリポジトリ 2 にプッシュできるようにするには、git remote addまたは を使用しますgit remote set-url(その名前のリモートが既に存在するかどうかによって異なります)。

git remote add origin /tmp/reponame
git fetch origin

あるいは:

git config remote.origin.url /tmp/reponame
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin

多くの場合、これに続いてブランチごとのアップストリームを更新し、git pullなどを機能させます。

git branch --set-upstream-to="origin/master" master

関連情報