[解決済み] Git はシンボリックリンクをどのように扱うのですか?
質問
シンボリックリンクのファイルやディレクトリを Git リポジトリにコミットした場合、そのファイルやディレクトリはどうなりますか?
ファイルが削除されるまでシンボリックリンクのままにしておき、古いバージョンからファイルを引き出すと、通常のファイルが作成されるだけだと思われます。
参照しているファイルを削除すると、どうなるのでしょうか?ダングリングリンクをコミットするだけなのでしょうか?
解決方法は?
から Linux symlink マニュアル (Linuxを想定しています)。
<ブロッククオートシンボリックリンクは、他のファイルのパス名である文字列をコンテンツとする特殊なタイプのファイルです。 (シンボリックリンクの内容は readlink(2) を使って読み取ることができます)。
つまり、シンボリックリンクはもう1つのファイルであり、ちょうど
README.md
または
Makefile
. Gitは、他のファイルと同じように、リンクの内容(すなわち、リンク先のファイルシステムオブジェクトの前述のパス)を「blob」に格納するだけです。そして、名前、モード、タイプ(シンボリックリンクであるという事実を含む)を、それを含むディレクトリを表すツリー・オブジェクトに格納します。
リンクを含むツリーをチェックアウトすると、対象のファイルシステムオブジェクトが存在するかどうかに関係なく、オブジェクトをシンボリックリンクとしてリストアします。
シンボリックリンクが参照しているファイルを削除しても、Git が管理しているシンボリックリンクには何の影響もありません。ダングリングリファレンスが発生することになります。必要であれば、リンクを削除するか、有効なものを指すように変更するかはユーザー次第です。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] Git で、ステージされていない変更を破棄するにはどうしたらいいですか?
-
[解決済み] Git リポジトリで削除されたファイルを検索して復元する方法
-
[解決済み] Git フェッチ リモートブランチ
-
[解決済み】"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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] あなたのブランチは 'origin/master' より 3 コミット進んでいます。
-
[解決済み] git rebase fatal: 必要なリビジョンは1つです。
-
[解決済み】「オリジン/マスターへのプッシュが拒否されました」というエラーが常に発生するのはなぜですか?
-
[解決済み】GitHubで空のブランチを作成する
-
[解決済み] 複数のコミットをチェリーピックする方法
-
[解決済み] TortoiseGitで「git did not exit cleanly (exit code 128)」というエラーを解決するには?[クローズド]
-
[解決済み] 警告: リモート HEAD は存在しない参照元を参照しているため、チェックアウトできません。
-
[解決済み] GitのFETCH_HEADとはどういう意味ですか?
-
[解決済み] Gitのエラー「object file ... is empty」はどうすれば直せますか?
-
[解決済み] [Solved] Gitにシンボリックリンクをたどらせるには?