0

私は単一の開発者であり、開発マシンと製品マシンを持っています。私はマスターブランチで開発しています。prodをプッシュする必要がある場合、いくつかのファイルを除外する必要があります。追跡されないため、.gitignoreに追加できません。

どうやってやるの?

4

3 に答える 3

2

あなたの質問を正しく理解しているかどうかはわかりませんが、Git を使用してアプリケーションをデプロイすることはできません (すべきではありません)。

Git は配布システムではなく、分散ソース管理システムです。

展開ツールを探している場合は、以下を確認することをお勧めします (しゃれた意図はありません)。

  • InnoSetup - 習得/使用は簡単ですが、あまり強力ではありません (MSI なし)
  • NSIS - Nullsoft Scriptable Instal System も習得が非常に簡単 (MSI なし)
  • WiX - 非常に強力ですが、かなり急な学習曲線
  • InstallAware - 商用ソフトウェアですが、無料の限定版がありました
  • InstallShield - 商用ソフトウェア、非常に強力、GUI ベース
于 2013-03-06T03:52:30.720 に答える
1

git update-index --assume-unchanged path/

git-update-index man ページから:

これらのフラグが指定されている場合、パスに記録されたオブジェクト名は更新されません。代わりに、これらのオプションは、パスの「変更されていないと仮定する」ビットを設定および設定解除します。「変更されていないと仮定する」ビットがオンの場合、git は作業ツリー ファイルの変更の可能性のチェックを停止するため、手動でビットを設定解除して、作業ツリー ファイルを変更したときに git に通知する必要があります。これは、lstat(2) システム コールが非常に遅いファイル システム (cifs など) で大きなプロジェクトを扱う場合に役立つことがあります。

このオプションは、追跡されたファイルのコミットされていない変更を無視するための粗いファイルレベルのメカニズムとしても使用できます (追跡されていないファイルに対して .gitignore が行うことと同様)。コミットでマージする場合など、インデックス内のこのファイルを変更する必要がある場合、Git は (正常に) 失敗します。したがって、想定されていない追跡対象ファイルが上流で変更された場合は、手動で状況を処理する必要があります。

于 2013-03-06T03:49:27.320 に答える
1

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バージョンを操作すると、バージョンがブランチに移動するはずです。devprodprod

devブランチを prod サーバーにプッシュする場合は、次を実行します。

$ git checkout master
$ git merge dev
$ git push deploy master

repoDeploy次の方法で、デフォルトのブランチを に設定することもできます。

git push deploy prod

prodブランチを使用して作業ディレクトリ内のファイルをチェックアウトします。しかし、私はそれをテストしませんでした。

于 2013-03-06T16:56:38.443 に答える