[解決済み] Git - シンボリックリンクの扱い方
2023-07-19 12:05:42
質問
gitでシンボリックリンクを処理する正しい方法は何ですか?
私は次のような構造を持っています。
Vendors
Module A
Module B
Module C
App
Code
Modules
Core Module 1
Core Module 2
Module A (symlinked to vendors)
Module B (symlinked to vendors)
Module C (symlinked to vendors)
アプリケーションのすべてのコア コードを含むメインの App ディレクトリがあります。 さらに、モジュールを含む vendor ディレクトリがあり、これらはメインの app ディレクトリにシンボリックリンクされるため、統合されます。
重要なのは、vendor ディレクトリと main app ディレクトリの両方が、同じリポジトリでバージョン管理されていることです。
したがって、git にシンボリックリンクを保存させ続けるべきか、あるいはシンボリックリンクを無視させる方法を見つけるべきでしょうか?
どのように解決するのですか?
Git は、すべての開発者が使用するオペレーティング・システムがシンボリックリンクをサポートしている限り、問題なく処理することができます。あなたはシンボリックリンクが存在することに依存しているので、あなたの開発環境はすべてシンボリックリンクをサポートしていると仮定します。
何かをgitリポジトリに含めるかどうか(シンボリックリンクかどうか)を決めるには、次のことを考慮してください。
- それは、リポジトリ内の何らかのツールや他の処理によって生成されたファイルでしょうか?もしそうなら、それを無視して各ユーザーにファイルを生成させ、常に最新版を手に入れられるようにするのが最善です。
- そのファイルは特定のユーザーの開発環境に特有のものですか、それともすべての環境で使用されるものですか? Emacs のバックアップ ファイルを無視する設定のように、特定のユーザーの環境の癖である場合、それはレポにふさわしくありません。もしそれがすべての開発者が必要とするものであり、かつ/または本番用のアプリケーションを構築するために必要なものであれば、それはリポジトリに入るべきです。
あなたの場合、シンボリックリンクは生成されないようですし、すべての環境で必要なので、リポジトリに置くことは問題ないでしょう。
しかし、リポジトリをクローンする場所に関係なく動作するように、作成するときは、絶対シンボリックリンクではなく、相対シンボリックリンクとして作成することを確認してください。これを行う最も簡単な方法は、Modules ディレクトリにディレクトリを変更し、そこからシンボリックリンクを作成することです。
cd App/Code/Modules
ln -s "../../../Vendors/Module A" "Module A"
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] Git にファイルモード (chmod) の変更を無視させるには?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
git pull reports エラー: :cannot open .git/FETCH_HEAD:Permission denied (.git/FETCH_HEADを開くことができません。
-
git を使用してリモートリポジトリを更新する場合、現在のブランチの先端がエラーの背後にあるため、更新が拒否されました。
-
Note: Git prompts このリポジトリで別の git プロセスが実行されているようです ....
-
[Gitラーニングノート】Gitのコンフリクト:マージする前に変更をコミットするかstashする。
-
Git: bash: cd: 引数が多すぎる
-
[解決済み] チェリーピックのコンフリクトを解決するにはどうしたらいいですか?
-
[解決済み] GitHubで、既存のレポを追加するときにすべてのブランチをプッシュするにはどうしたらいいですか?
-
[解決済み] CVS から Git への移行: $Id$ 相当?
-
[解決済み] VSCodeからgitの統合を削除する
-
[解決済み] プル前にローカルとGitHubのリポジトリの差分を確認する方法 [重複]について