[解決済み】-depth 1でcloneを浅くし、コミットを作成し、再び更新をpullするのは安全ですか?
質問
は
--depth 1
のオプションは
git clone
:
を作成します。 浅い のクローンを作成し、履歴を指定したリビジョン数まで切り詰めます。浅いリポジトリにはいくつかの制限があります(クローンやフェッチ、プッシュはできません)が、長い歴史を持つ大規模なプロジェクトの最近の歴史にしか興味がなく、修正をパッチとして送りたい場合に適しています。
しかし、私は浅いクローンを成功させ、いくつかの変更をコミットしました。 をプッシュし、その変更を を(ベアクローンの)オリジンに戻す。
つまり、クローンされた HEAD がオリジンで識別可能で、その上に私のコミットが乗っているのであれば、理由はないように思えます。しかし、マニュアルにはそう書かれていません。
シャロークローンのアイデアは好きです。
つまり、浅いクローン、その中での開発コミット、オリジンからの更新に追いつくために再度プルすることは安全なのでしょうか?
解決方法は?
なお、Git 1.9/2.0 (2014年第1四半期) には
削除
という制限があります。
参照
コミット 82fba2b
からの
Nguyễn Thái Ngọc Duy (
pclouds
)
:
gitがシャロークローンからのデータ転送やシャロークローンへのデータ転送をサポートするようになった今、これらの制限はもう真実ではありません。
その のドキュメントは次のようになります。 :
--depth <depth>::
指定したリビジョン数まで切り詰めた履歴を持つ、「浅い」クローンを作成します。
これは、以下のようなコミットに由来しています。
0d7d285
,
f2c681c
そして
c29a7b8
クローン、浅いクローンとの send-pack /receive-pack をサポートします。
smart-http がシャローフェッチ/クローンもサポートするようになりました。
.
詳細はすべて"に掲載されています。
shallow.c
の新しいコミットを選択するための 8 つのステップです。
.git/shallow
"です。
2015年6月更新
Git 2.5では、さらに
単一のコミットを取得する
!
(究極の浅い場合)
2016年1月更新。Git 2.8 (Mach 2016) では、最小限の履歴を取得する慣習が公式に文書化されました。
参照
コミット 99487cf
,
コミット 9cfde9e
(2015年12月30日)をご参照ください。
コミット 9cfde9e
(2015年12月30日)をご参照ください。
コミットbac5874
(2015年12月29日)、および
コミット1de2e44
(2015年12月28日)による
スティーブン・P・スミス (``)
.
(によって統合されました。
ジュニオ・C・ハマノ--。
gitster
--
で
コミット 7e3e80a
, 2016年1月20日)
こちらは"です。
Documentation/user-manual.txt
"
A
<<def_shallow_clone,shallow clone>>
を指定することで作成されます。git-clone --depth
スイッチになります。
深さは、後でgit-fetch --depth
スイッチ、または--unshallow
.の中でマージする。
<<def_shallow_clone,shallow clone>>
は、マージベースが最近の履歴にある限り、動作します。
そうでない場合は、無関係の履歴をマージするようなもので、巨大なコンフリクトが発生する可能性があります。
この制限により、このようなリポジトリは、マージベースのワークフローで使用するには適さないかもしれません。
2020年にアップデートします。
-
git 2.11.1 で導入されたオプション
git fetch --shallow-exclude=
すべての履歴を取得しないようにするために -
git 2.11.1 で導入されたオプション
git fetch --shallow-since=
を使用して、古いコミットを取得しないようにしました。
シャロークローンの更新作業については、"を参照してください。 git シャロークローンを更新するには? となります。
のコメント通りです。 リチャード・マイケル :
歴史を埋め戻すために
git pull --unshallow
そして オーレ・ハーシュテット が追加されます。 コメント欄 :
埋め戻すには 部分 履歴の
git fetch --depth=100
.
関連
-
[解決済み] spark.sql.shuffle.partitionsとspark.default.parallelismの違いは何ですか?
-
[解決済み] 効率的なアウトオブコアソーティング
-
[解決済み] detached HEADとmaster/originの連携はどうすればいいですか?
-
[解決済み] Gitのプッシュを正しく強制する方法は?
-
[解決済み] プル後にコミットした (プッシュしていない) 変更を新しいブランチに移動させる
-
[解決済み] git リポジトリから origin を削除する方法
-
[解決済み】作者の全ブランチから一度にgitログを取得する方法は?
-
[解決済み】再帰と反復のどちらを選ぶ?
-
[解決済み] Scalaのlazy valの(隠れた)代償は何なのか?
-
[解決済み】Subversion リポジトリから最後の n リビジョンを git-svn でクローンする方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 実行時間(高速化)の計算方法
-
[解決済み] LOWER LIKE vs iLIKE
-
[解決済み] Git で単一のブランチをクローンする方法を教えてください。
-
[解決済み] 最後の手段としてのパフォーマンス最適化戦略【終了しました
-
[解決済み】HTTPとHTTPSのパフォーマンス比較
-
[解決済み】Goはどうしてそんなに早くコンパイルできるのですか?
-
[解決済み】長さnのソートされていない配列の中でk番目に大きい要素をO(n)で見つけるにはどうすればよいですか?)
-
[解決済み] SSLはどれくらいのオーバーヘッドを発生させるのですか?
-
[解決済み】リモート Git リポジトリから特定のコミットを取得する
-
[解決済み] Haskellプログラムにおけるガベージコレクションの一時停止時間の削減