私は単一の開発者であり、開発マシンと製品マシンを持っています。私はマスターブランチで開発しています。prodをプッシュする必要がある場合、いくつかのファイルを除外する必要があります。追跡されないため、.gitignoreに追加できません。
どうやってやるの?
私は単一の開発者であり、開発マシンと製品マシンを持っています。私はマスターブランチで開発しています。prodをプッシュする必要がある場合、いくつかのファイルを除外する必要があります。追跡されないため、.gitignoreに追加できません。
どうやってやるの?
あなたの質問を正しく理解しているかどうかはわかりませんが、Git を使用してアプリケーションをデプロイすることはできません (すべきではありません)。
Git は配布システムではなく、分散ソース管理システムです。
展開ツールを探している場合は、以下を確認することをお勧めします (しゃれた意図はありません)。
git update-index --assume-unchanged path/
git-update-index man ページから:
これらのフラグが指定されている場合、パスに記録されたオブジェクト名は更新されません。代わりに、これらのオプションは、パスの「変更されていないと仮定する」ビットを設定および設定解除します。「変更されていないと仮定する」ビットがオンの場合、git は作業ツリー ファイルの変更の可能性のチェックを停止するため、手動でビットを設定解除して、作業ツリー ファイルを変更したときに git に通知する必要があります。これは、lstat(2) システム コールが非常に遅いファイル システム (cifs など) で大きなプロジェクトを扱う場合に役立つことがあります。
このオプションは、追跡されたファイルのコミットされていない変更を無視するための粗いファイルレベルのメカニズムとしても使用できます (追跡されていないファイルに対して .gitignore が行うことと同様)。コミットでマージする場合など、インデックス内のこのファイルを変更する必要がある場合、Git は (正常に) 失敗します。したがって、想定されていない追跡対象ファイルが上流で変更された場合は、手動で状況を処理する必要があります。
Git はデプロイ ツールではありませんが、次のように簡単に採用できます。
したがって、プッシュを使用すると、サーバー上のファイルを更新できます。
手順は次のとおりです。
2 つのリポジトリを作成します: repoDev
(ここで作業します)、repoDeploy
(これはサーバー上のリポジトリです)
$ git init repoDev
//add some commits to your repoDev
$ git init repoDeploy
内部repoDeploy
実行:
//in repoDeploy
$ git config receive.denyCurrentBranch ignore
$ git config core.worktree ../
上記のコマンドは、にプッシュするとrepoDeploy
、その作業ディレクトリがプッシュで更新されることを定義します。
構成repoDev
:
//in repoDev
$ git remote add deploy URL-of-repoDeploy
押す:
//in repoDev
//commit some changes
$ git push deploy master
の作業ディレクトリをrepoDeploy
更新する必要があります。
prod
および環境に異なるブランチを使用するとdev
、問題が解決するはずです。
ブランチでdev
バージョンを操作すると、バージョンがブランチに移動するはずです。dev
prod
prod
dev
ブランチを prod サーバーにプッシュする場合は、次を実行します。
$ git checkout master
$ git merge dev
$ git push deploy master
repoDeploy
次の方法で、デフォルトのブランチを に設定することもできます。
git push deploy prod
prod
ブランチを使用して作業ディレクトリ内のファイルをチェックアウトします。しかし、私はそれをテストしませんでした。