2016-10-08 6 views
2

シンボリックリンクを張ってgitリポジトリの外部にファイルをプッシュする方法はありますか?シンボリックリンクをgitリポジトリに置いてファイルを追加できますか?

ファイル/root/my_fileをプッシュし、gitリポジトリにシンボリックリンクmy_symbolic_linkを作成します。

# ls -lA                              
drwxr-xr-x 7 root root 4096 Oct 8 07:55 .git/ 
lrwxrwxrwx 1 root root 26 Oct 8 7:58 my_symbolic_link -> /root/my_file 
+0

これはリンク自体を追加するだけだと思います... – beatngu13

+0

デフォルトでは、動作を変更するようにgitを設定できますか? – user123456

+0

ハードリンクでもそうは思いません(http: //stackoverflow.com/q/3729278))。 – beatngu13

答えて

3

シンボリックリンクは、ファイルシステム内の別のファイルへの参照を含むファイルです。リポジトリにシンボリックリンクを追加することはできますが、リポジトリにシンボリックリンクを追加するだけで、他のファイルではなく他のファイルへの参照を追加することができます。

シンボリックリンクの代わりにハードリンクを作成することで、あなたが望むものを実現できます。ハードリンクとは、ファイルシステムレベルでのファイル名とその内容(およびメタデータ)との関連付けです。ファイルへのハードリンクを作成し、それをリポジトリに追加することによって、そのリンクされたファイルを追加します。リンクthis questionとその答えを見るの異なる種類についての詳細情報については

ln /root/my_file my_hard_link 

:(すべてのlinuxesのような)POSIX準拠のオペレーティングシステム上では、このようなハードリンクを作成することができます。

更新日: gitはハードリンクについて何も知らないことに注意してください。 git repoへのハードリンクを追加すると、リンクされたファイルの内容を追加しています。 Gitはあなたが今追加したファイルがハードリンクであることを知らない。レポへのハードリンクを追加しても問題はありませんが、レポからチェックすると、そのファイルの新しいコピーが作成され、そのハードリンクは再作成されません。 「チェックアウト」することで、git checkoutコマンドだけでなく、0123,という新しい操作でハード・リンクを削除し、git resetを使用して再作成するか、リモートからこのハードリンク・ファイルの新しいバージョンを作成するレポ要約すると

- あなたの二つのオプションがあります:

  • はレポにソフトリンクを追加 - これはリンクに関する情報のみを追加し、リンクされたファイルの内容ではないだろう。
  • レポにハードリンクを追加 - リンクされたファイルの内容を追加します。リンクに関する情報は追加されませんが、次にハードリンクされたファイルをリポジトリからチェックするまで、リンクが切断されることはありません。
関連する問題