シンボリックリンクは、ファイルシステム内の別のファイルへの参照を含むファイルです。リポジトリにシンボリックリンクを追加することはできますが、リポジトリにシンボリックリンクを追加するだけで、他のファイルではなく他のファイルへの参照を追加することができます。
シンボリックリンクの代わりにハードリンクを作成することで、あなたが望むものを実現できます。ハードリンクとは、ファイルシステムレベルでのファイル名とその内容(およびメタデータ)との関連付けです。ファイルへのハードリンクを作成し、それをリポジトリに追加することによって、そのリンクされたファイルを追加します。リンクthis questionとその答えを見るの異なる種類についての詳細情報については
ln /root/my_file my_hard_link
:(すべてのlinuxesのような)POSIX準拠のオペレーティングシステム上では、このようなハードリンクを作成することができます。
更新日: gitはハードリンクについて何も知らないことに注意してください。 git repoへのハードリンクを追加すると、リンクされたファイルの内容を追加しています。 Gitはあなたが今追加したファイルがハードリンクであることを知らない。レポへのハードリンクを追加しても問題はありませんが、レポからチェックすると、そのファイルの新しいコピーが作成され、そのハードリンクは再作成されません。 「チェックアウト」することで、git checkout
コマンドだけでなく、0123,という新しい操作でハード・リンクを削除し、git reset
を使用して再作成するか、リモートからこのハードリンク・ファイルの新しいバージョンを作成するレポ要約すると
- あなたの二つのオプションがあります:
- はレポにソフトリンクを追加 - これはリンクに関する情報のみを追加し、リンクされたファイルの内容ではないだろう。
- レポにハードリンクを追加 - リンクされたファイルの内容を追加します。リンクに関する情報は追加されませんが、次にハードリンクされたファイルをリポジトリからチェックするまで、リンクが切断されることはありません。
これはリンク自体を追加するだけだと思います... – beatngu13
デフォルトでは、動作を変更するようにgitを設定できますか? – user123456
ハードリンクでもそうは思いません(http: //stackoverflow.com/q/3729278))。 – beatngu13