[解決済み] git を使用して、あるブランチにあるファイルを無視し、別のブランチにコミットさせるにはどうすればよいですか?
質問
プロジェクトがあり、そのプロジェクトを Heroku . ソースコードツリーには、たくさんのmp3ファイルが含まれています(ウェブサイトは、私が深く関わった録音プロジェクトのためのものになります)。
そのソースコードをアップするのは
ギットハブ
しかし、GitHubの無料アカウントには300MBの制限があります。 しかし、GitHubの無料アカウントには300MBの制限があり、そのうちの50MBをたくさんのmp3ファイルに使いたくありません。 もちろん、これらのファイルを
.gitignore
ファイルに保存して、私のレポから除外することができます。
しかし、Herokuへのデプロイは
git push heroku
. mp3 ファイルは、Heroku にプッシュするブランチに存在していなければ、デプロイされることはありません。
理想的には、次のようにしたい。
.gitignore
をローカルの master ブランチに置いておくと、それを GitHub にプッシュするときに mp3 ファイルが含まれないようにすることができます。 そしてローカルの本番用ブランチには、mp3を無視するのではなくコミットしておきます。 デプロイするには、master を production にマージし、production ブランチを Heroku にプッシュします。
うまく動作させることができないのですが。
以下は、私がやろうとしていることの例です...。
$ git init git-ignore-test
$ cd git-ignore-test
$ echo "*.ignored" >> .gitignore
$ git add .gitignore && git commit -m "Ignore .ignored files"
$ touch Foo.ignored
この時点で、Foo.ignored は私の master ブランチでは無視されていますが、まだ存在しているので、私のプロジェクトはそれを使うことができます。
$ git checkout -b unignored
$ cat /dev/null > .gitignore
$ git add Foo.ignored .gitignore && git commit -m "Unignore .ignored files"
これで、これらのファイルがコミットされたブランチが、私の望むとおりになりました。 しかし、masterブランチに戻ると、Foo.ignoredが消えています。
どなたか、より良い設定方法をご存じですか?
編集:明確にするために、私はmp3ファイルを両方のブランチに存在させ、ローカルでサイトを実行したときに(どちらかのブランチを使用して)サイトが動作するようにしたいです。 一方のブランチではファイルを無視させたいので、GitHub にプッシュするときに同様にプッシュされないようにしたいのです。 通常、.gitignore はこのような場合にうまく機能します (リモートへのプッシュに含めないファイルのローカルコピーを保持するなど)。しかし、ファイルをチェックインしたブランチに切り替え、その後ファイルを無視したブランチに戻ると、ファイルが消えてしまいます。
どうしたらいいですか?
<ブロッククオートこの解決策は、パッチが適用された特定のバージョンのgitにのみ有効なようです。以下を参照してください。 回避策を示す新しい回答 と 別の回答およびそれに続くコメント をご覧ください。
を効果的に使う方法をブログで書きました。
excludesfile
を、github公開用とherokuデプロイ用というように、異なるブランチで使用します。
ざっとこんな感じです。
$ git branch public_viewing
$ cd .git/
$ touch info/exclude_from_public_viewing
$ echo "path/to/secret/file" > info/exclude_from_public_viewing
そして、.git/config ファイルに以下の行を追加します。
[core]
excludesfile = +info/exclude
[branch "public_viewing"]
excludesfile = +info/exclude_from_public_viewing
これで、グローバルに無視されるものはすべて
info/exclude
ファイルに、ブランチ固有のものは
info/exclude_from_public_viewing
お役に立てれば幸いです。
http://cogniton-mind.tumblr.com/post/1423976659/howto-gitignore-for-different-branches
関連
-
[解決済み] ssh-keygen' は内部コマンドまたは外部コマンドとして認識されません。
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] Git が追跡したファイルを .gitignore に登録したまま「忘れる」ようにするにはどうしたらいいですか?
-
[解決済み] 新しいローカルブランチをリモートの Git リポジトリにプッシュし、それを追跡するにはどうすればよいのでしょうか?
-
[解決済み] Git のリモートブランチを作成する方法を教えてください。
-
[解決済み] Gitで変更された複数のファイルのうち、1つのファイルだけを隠す?
-
[解決済み] detached HEADとmaster/originの連携はどうすればいいですか?
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】マージ後のコミットでGitエラー - fatal: マージ中に部分コミットができない
-
[解決済み】fatal: 有効なオブジェクト名ではない: 'master'
-
[解決済み】ローカルに変更があるにもかかわらず、git pushが「すべて最新」と言う
-
gitコミット発生 ! [リモート拒否] master -> master (pre-receive hook declined) 解決策
-
[解決済み] SourceTree error:1407742E:SSLルーチン:SSL23_GET_SERVER_HELLO:tlsv1警告プロトコルバージョン
-
[解決済み] .gitignore と "以下の追跡されていない作業ツリーファイルはチェックアウトによって上書きされるでしょう"
-
[解決済み] GitBash | origin master - rejected (fetch first) | GitHub リポジトリにファイルがない。
-
[解決済み] git commit signing failed: secret key not available.
-
[解決済み] GitのFETCH_HEADとはどういう意味ですか?
-
[解決済み] Gitのフォルダ構造で変更・追加されたファイルのみをエクスポートする機能