機密情報を含む複数のファイルがgitignoredされるgitリポジトリがあります。これらのファイルは、異なる深さの異なるサブディレクトリにあります。
所有者ㅏこれらの文書はすべて正しい場所にあります。ストレージをホストシステムに複製しました。第二、ホストからgitignoredファイルをコピーする良い方法を探しています。ㅏ。
SSH経由で接続できます。ㅏ到着第二、rsyncを使用してこれを行う方法があるかどうか疑問に思いますが、私が見つけたすべての例はその逆を説明します。すべてを同期します。とは別にgitignored ファイル。
答え1
gitプロジェクトディレクトリで使用すると、git check-ignore **/*
gitはすべてのファイルを無視します。
gitコマンドの出力をファイルに送信し、コマンド--files-from
のオプションを使用する必要がありますrsync
。たとえば、
git check-ignore **/* > ignoredFiles
rsync -a --files-from=./ignoredFiles . host:/path/to/ignoredFiles
ポイントを指定する必要があります.
(rsync
無視されたファイルファイル)、ソースディレクトリを表すので、gitプロジェクトのルートディレクトリになります。
このコマンドはgit check-ignore **/*
私にのみ動作しますzsh
(bashではなぜ動作しないのかわかりません)。ただし、このコマンドを使用すると隠しファイルには機能しないため、隠しファイルも除外するには次のようにします。
find . -exec git check-ignore {} + > ignoredFiles
rsync -a --files-from=./ignoredFiles . host:/path/to/ignoredFiles
無視されたファイルをいくつかのファイルにリダイレクトし、 --files-from を使用して読み込むのは安全です。空白のあるファイル名は正しくコピーされるためです(ただし、他の特殊ファイル名についてはわかりません)。
答え2
最終的にはrsyncを使用し、すべてのgitignoredファイルを列挙するのではなく、ディレクトリ全体(.git /を除く)を同期し、それを使用して--ignore-existing
ターゲットにすでに存在するファイルを同期させませんでした。
rsync -avz --no-links --ignore-existing --exclude='.git/' \
~/example/repo user@host:example
また、rsyncオプションは呼び出しをテストし、私が目的のファイルを同期していることを確認するのに--dry-run
非常に便利です。-vv
rsync
rsync --dry-run -avvz ...