2017-07-25 16 views
0

が、私は最近、私のサーバーが浅くなるためにクローンを作成する方法を変更し、展開をスピードアップするために:浅いクローンとは別のブランチのリモートヘッドを確認するにはどうしたらいいですか?

LOCAL=$(git rev-parse HEAD) 
REMOTE=$(git rev-parse origin/$NEWBRANCH) 

if [ $LOCAL = $REMOTE ]; then 
    echo "Up-to-date" 
else 
    blah... 
fi 

以前は、これは大丈夫だった、しかし:

問題がある
git clone -b $BRANCH --depth 1 [email protected]:initech/rounding.git . 

、更新メカニズムは、次の処理を行いgitは他のブランチの存在を知らないので、今度はfatal: Needed a single revisionとなります。

チェックアウトせずにHEADコミットをチェックするにはどうすればいいですか(このチェックアウトをそのまま実行したいので、サーバーを実行しているので)?

答えて

1

これは直接行うことはできません。情報は単純に存在しません。

もう1つ、より完全なGitリポジトリに問い合わせることができれば、その答えを見つけることができます。このための正確な仕組みは、(明らかに)他のより完全なGitリポジトリに到達する方法と話をすることだけに依存しますが、組み込みのメカニズムがあります:git ls-remote

自分のリポジトリの1つで手動でgit ls-remoteを実行してください。 Gitトランスポートを介してリモート(通常はoriginしかし、you can choose which remote; see the documentation)を呼び出すことに注意してください。誰かがGitトランスポートを実行すると、誰でもそれを他のリポジトリにアクセスする必要があります。

という参照名がリモートのに表示されていることにも注意してください。 あなた Gitの店のあなたコピーあなたrefs/remotes/origin/masterの下に "他のGitはrefs/heads/master(分岐master)と呼ぶもの"。これにより、refs/heads/masterとは別のものになります。彼らのGitはもちろん、mastermasterと別にする必要はありません。 Gitはこれを完全名refs/heads/masterで保存しています。これは、あなたのテストがそれに応じて変わる必要があることを意味します。

関連する問題