10

Git で管理したい単一のファイル foo.txt があり、それを(たとえば) /Users/me/Documents から独自のディレクトリに移動したくないとします。 foo.txt を使用してリポジトリに含めたくない他のファイルがたくさんあります。これは可能ですか?

ベアレポを作成しようとしました(したがって、.gitという名前は付けられません):

git init --bare .foo.txt

info/exclude ファイルに次のようなものを入れて、foo.txt 以外のすべてを除外することを計画しました。

*
!foo.txt

git statusしかし、私が遭遇した問題は、 .git ディレクトリの非標準の置換を渡す方法がないように見えるため、 a を実行することさえできないことです。

通常の .git ディレクトリを使用すると、その 1 つのファイルのバージョン管理が制限されるか、同じリポジトリに他のファイルを含める必要があり、そのディレクトリ内の他のファイルをそのディレクトリでバージョン管理できるようにする必要があるため、機能しません。独自のレポ。

これは Git が設計されたユース ケースではないことはわかっていますが、Git は私がすでに使い慣れている強力なツールであるため、他の方法よりも Git を使用したいと考えています。

4

4 に答える 4

6

最初にファイルの git リポジトリを初期化すれば、まさにやりたいことを実行できます。

git init --bare .foo.txt

次に、次のように git を実行します。

git --git-dir=.foo.txt --work-tree=. status

その 2 番目のコマンドの最初の部分を にエイリアスするgit-fooと、レースに出られます。

于 2012-11-11T22:49:20.017 に答える
3

.gitignoreファイルを使用して、編集する必要のあるファイルのフィルターを作成するのはどうですか。このソリューションは、Windowsでサポートされていないハードリンクを回避します。

たとえば、次のファイル:

$ cat .gitignore
*
!data.xml

「data.xml」を除くすべてのファイルを無視するようにgitを構成します。

于 2012-11-11T22:05:48.983 に答える
3

最善の策は、別のディレクトリにレポを作成し、その中に含めるファイルごとにハードリンクを作成することだと思います。

mkdir some_repo
cd some_repo
git init
ln path/to/file file
# add & commit
于 2012-06-20T21:37:11.177 に答える
1

別のディレクトリに保存されているリポジトリ内の単一のファイルを追跡するのが最も便利です。

git リポジトリを格納するディレクトリを作成する

mkdir my-repo-path

worktree ディレクトリ (目的のファイルがある場所) に移動します。

cd my-worktree-path

の隠しサブディレクトリ内に別のリポジトリを初期.git化しますmy-repo-path

git init --separate-git-dir my-repo-path\.git

.git別のリポジトリに加えて、git はworktree ディレクトリに隠しファイルを作成しました。必要に応じて削除できます (作業ツリー ディレクトリ内の他のファイルを別のリポジトリで個別に追跡する場合に便利です)。

del /AH .git

任意のテキスト エディターでファイルmy-repo-path\.git\info\excludeを開き、末尾に次の行を追加します (foo.txt追跡するファイルはどこにありますか)。

*
!foo.txt

コマンド プロンプトで git リポジトリに移動し、コミットする内容を追加します。

cd my-repo-path\.git
git add .
git commit

リモート オリジンを追加し、マスター ブランチをプッシュして、それにアップストリーム (追跡) 参照を追加します。

git remote add origin <url>
git push -u origin master

その後、git リポジトリ ディレクトリから次のコミットを追加します (最後から 2 番目の手順を参照してください)。

于 2016-11-02T14:57:31.127 に答える