8

私は長くて奇妙な歴史を持つgitリポジトリを持っています。開発者がこのリポジトリで何をしたのかわからないので、現在リポジトリで何をしているのかを制御できません。

ただし、このリポジトリのクローンを作成し(Redmine統合用)、すべての変更を定期的に取得する必要があります。

私は何をしますか:

git clone --bare git@git.server.com:/opt/git/repo
cd repo.git
git log

これで、すべてのコミットを確認できます。罰金。

次に、開発者がメインリポジトリでコミットを行い、すべての変更(すべてのブランス、タグなど)をフェッチしたいと思います。

> git fetch --all 
Fetching origin
remote: Counting objects: 18, done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 14 (delta 5), reused 0 (delta 0)
Unpacking objects: 100% (14/14), done.
From git.gmcs.ru:/opt/git/ecco
 * branch            HEAD       -> FETCH_HEAD

しかし、コミット履歴を尋ねると、メインリポジトリで行われた最後のコミットは表示されませんでした。なんで ?

私が十分な情報を投稿しない場合、私はあなたに必要なすべてを与える準備ができています。

前もって感謝します。

更新しました

元のレプシトリーのブランチ情報は次のとおりです。

git branch -a
  one
  test
* master
  release

複製されたリポジトリのブランチ情報は次のとおりです。

git branch -a
  one
  test
* master
  release

元のリポジトリのマスターブランチで最後のコミットを確認できますが、複製されたリポジトリのマスターブランチでコミットを見つけることができません。

4

4 に答える 4

14

より多くの更新をベアリポジトリにフェッチするには、次のようにします。

git config remote.origin.fetch 'refs/heads/*:refs/heads/*'

それから私はすることができます:

git fetch
于 2013-06-27T01:52:24.170 に答える
6

あなたは使用する必要がありますgit pull

またはgit mergeフェッチ後に実行して、フェッチされた変更を取得します

ベアリポジトリがある場合、プルを実行することはできません。プルは、ベアリポジトリにはないHEADとマージする必要があるためです。

ベアリポジトリを更新するにはremote、非ベアリポジトリとして追加してプッシュします。

しかし、私は--mirror代わりに--bareあなたのためにそのまま働くと思います。

--bareと比較すると、-mirrorは、ソースのローカルブランチをターゲットのローカルブランチにマップするだけでなく、すべての参照(リモートブランチ、メモなどを含む)をマップし、これらすべての参照が上書きされるようにrefspec構成を設定します。ターゲットリポジトリのgitリモートアップデートによる。

git remote update次に、ミラー化されたリポジトリを更新するために使用できます

于 2012-11-19T12:16:04.423 に答える
1

ベアリポジトリにフェッチするには、最初に定期的に設定します

git config remote.origin.fetch "+*:*"

その後、単に実行します

git fetch --prune

タグ、新しいブランチ、さらにはブランチの削除を含むすべての変更をフェッチします(オプション--prune)。

  • シェルから解釈されないように"アステリックス()を保護するために、上記のコマンドで囲まれた二重引用符()にも注意してください。*
  • 早送り以外の更新を許可するには、プラス記号が必要です。リモコンの現在の状態をバックアップしたい場合は、おそらくそれがあなたの意図です。
  • 注:タグの削除は、この構成を使用してフェッチされません。

https://stackoverflow.com/a/33461528/4138912も参照してください。

于 2015-11-01T11:45:57.133 に答える
0

HEADベアリポジトリのをで更新できます。たとえば、リモートgit symbolic-refからのブランチを指すように指定できます。masterorigin

$ git symbolic-ref HEAD refs/remotes/origin/master

git fetchリモートを更新するために使用する場合、たとえば、更新されますorigin/master。欠けていたのは、クローンのを再ポイントすることだけでしたHEAD

于 2012-11-19T13:03:31.143 に答える