1

空のリポジトリがあり、更新をプルするためだけに使用git initする別のリポジトリをプルしたい場合、ルート ディレクトリにファイルを配置するにはどうすればよいですか?

そう、

まあ言ってみれば:

cd ~/repositories
mkdir newrepo
cd newrepo
git init
echo "testfile" > readme.md
git add .
git remote add <whatever>
git push -u origin master

#ok so that part works fine
#now we have our repository at <my_other_repository> that looks like
#a_root_file.ext
#directory/another_file.ext

#so now I want to run something like:
git clone <my_other_repository>

#and end up with:
#readme.md
#a_root_file.ext
#directory/another_file.ext

#if I then run
echo "edited testfile" > readme.md
git status
#I want to be told that
#untracked changes
#newfile: a_root_file.ext
#newfile: directory/another_file.ext
#modified: readme.md

#running
git commit -a -m "Some files from another repository"
git push
#should push everything up to the <whatever> repository

#then I want to be able to run
git pull <my_other_repository_name>
# and have it pull in any upstream changes

これは設定できるものですか?

「ラッパーディレクトリ」を用意することで、少し回避できると思います

cd ~/repositories
mkdir newrepo
cd newrepo
git init
git remote add <whatever>
mkdir wrapper #this will now be the root of my project
cd wrapper
echo "testfile" > readme.md
cd ../
git add .
git push -u origin master

その後、問題なく実行できるはずですgit clone <my_other_repository>が、これは1つのリポジトリでのみマージしたい場合にのみ機能し、複数のリポジトリでマージしたいと考えており、2つのリポジトリが監視しているため、何が変更を追跡しているのか疑問に思っています同じファイル、両方がそれらを追跡しますか? または、<whatever>「これらはこのリポジトリの下にあるので、追跡しません!」と言うでしょうか?

4

2 に答える 2

2

ここで何を求めているのか正確にはわかりませんが、複数持つことができることに注意してくださいremote。たとえば、次のことができます。

git remote add another <my_other_repository>

その後、 を使用して更新を取り込むことができますgit fetch another。その後、次を使用して更新をマージできます。

git merge another/master

他のリポジトリからの更新をローカル リポジトリにマージします。

于 2012-09-18T23:32:53.097 に答える
0

これを達成する最善の方法は、2 つのリポジトリを用意することだと思いますが、一方を他方のフォークにして、一方から他方にコミットをプルします。

一方が他方のフォークである 2 つの異なるリポジトリを持つことで、2 つの間で個々のコミットを簡単に追跡できます。2 つの異なるリポジトリがある場合、単純に 2 つのリポジトリ間で個々のコミットをマージするのではなく、変更を新しいコミットとして一方から他方にプルする必要がある場合があります。

手順は次のようになると思います。

  • 最初のリポジトリを作成してプッシュしoriginます (ここでは github を使用していると仮定します)。これは、シナリオの <何でも> リポジトリです。
  • リポジトリをフォークします。これが <*my_other_repository*> リポジトリになります。
  • 次に、必要なリポジトリで必要に応じて変更をコミットします。
  • 次に、必要に応じてそれらの間で変更を「プル」します。

このアプローチにより、すべてのコミットがリポジトリ間で簡単かつ完全に行われることを保証する際に、多くの柔軟性が得られます。(上記のシナリオでは、新しいリポジトリのコミットは実際には異なる git コミットになります。これにより、場合によっては個々のコミットに関する情報が失われる可能性があります。)

このアプローチのもう 1 つの利点は、2 つだけでなく、3 つ、4 つ、5 つ、または他の多くのリポジトリを持つように拡張するのが非常に簡単であることです。 ' 理にかなっている場合は、いくつかの変更を拒否します。

幸運を祈ります -

于 2012-09-19T00:06:38.120 に答える