シンボリックリンクされたフォルダにgitコミットファイルを作成するにはどうすればよいですか


19

2つのフォルダーがあります。

  • /home/me/code/project/
  • /srv/www/projectfiles/

では/home/me/code/project、フォルダ、私はシンボリックリンクしているstatic/srv/www/projectfiles/

すなわち/home/me/code/project/static/->/srv/www/projectfiles/

今コミットしようとすると、シンボリックリンクの背後にあるファイルはまったく表示されず、代わりにシンボリックリンク自体をファイルとしてコミットしようとします。

/srv/www/projectfiles/style.cssシンボリックリンクの背後にあるファイル(例)をコミットするにはどうすればよいですか?

回答:


12

回避策は、/ srv / www / projectfilesを/ home / me / code / project / staticへのシンボリックリンクにすることです。これにより、gitはシンボリックリンクを認識しません。


あなたは基本的に論理を逆にしているのですか?必要なファイル/フォルダーをGitフォルダーに保持してから、別の場所(元のファイル/フォルダーが存在していた場所)にシンボリックリンクを配置しますか?
-RusI

@Ruslはい、正確に
user151019

しかし、ファイルのローカルカスタマイズを行うにはどうすればよいですか?各マシンに個別のリポジトリを用意する必要がありますか?ポイントをすべて失います。
Ashnur

さて、ローカルカスタマイズはgitにはありません
-user151019

3

Linuxを使用している場合、GitBLSRが提供するソリューションが特に気に入っています。これは、LD_PRELOADを介してロードされるライブラリであり、リポジトリ外部のファイルおよびフォルダへのシンボリックリンクを透過的に間接参照します。

ローカルユーザーアカウントにインストールするのは簡単です。

git clone https://github.com/Alcaro/GitBSLR.git
cd GitBSLR
./install.sh

これにより、ライブラリがコンパイルされ、次のようなエイリアスが作成され~/.bashrcます。

alias git="LD_PRELOAD=/path/to/gitbslr.so git"

このエイリアスを使用すると、透過リンクの逆参照が有効になります。


1
それはひどい!しかし、それはうまく動作しますので、素晴らしいです。ありがとうございました!
kayは

それは変だ!私はそれが大好き
マルコスベステイロロペス

2

マウントポイントを使用して、目的のフォルダー(現在シンボリックリンク先)をマウントして、gitプロジェクトの下の目的の場所に表示することを検討してください。私はこのアプローチをうまく使いました。


1

ファイルをフォルダーに移動し、シンボリックリンクを削除します。Gitはシンボリックリンクを通過しません。

それ(そして私)は、あなたが制御したり修正したくないファイルのセットにシンボリックリンクしていると仮定します。


1
これらのファイルを制御します。これらはスタイルシートなどであり、サーバーがサーバーするディレクトリに存在する必要があります。
マチャ

1

別の回避策-ディレクトリでも機能することがわかった唯一の回避策は、特定のアクションのgit作業ツリーを変更することです。

git --work-tree=/home/me/code/project/ add /home/me/code/project/static/
git --work-tree=/home/me/code/project/ commit /home/me/code/project/static/
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.