1

I want to use git to manage my development, integration test and production environments. I've looked around but can't seem to find a simple explanation of how (eg Git - pushing to remote repository doesn't quite do it). A very brief explanation of what I want to do:

  • I master my codebase on my laptop as that's where I do most of my work.
  • I host my site on 1and1. On there, I have two sites set up, the production site and an integration test site.
  • I want to set up git so I can have two remotes on my laptop, say siteprod and siteint.
  • Whenever I have a branch I want to test, I want to push it from my laptop, say using "git push siteprod newproductionversion" (I'm sure you get the idea).

I've achieved something close by creating a repository on 1and1 using git --init (note without --bare!) and setting up the remotes using ssh. But I have to set receive.denyCurrentBranch to ignore and once I've pushed, I have to checkout the branch by logging onto the 1and1 server. I have to repeat it all for the integration environment.

This seems very clumsy but I'm sure my use case is not at all unusual. Is there a sensible way of doing this?

4

2 に答える 2

6

サーバーにssh接続している場合は、サーバー上のリポジトリにgitremoteを直接追加できます。何かのようなもの:

git add remote production sshUser@example.com:/path/to/repo/.git

次に、展開するには、

git push production branch

そうは言っても、おそらくgitリポジトリから本番コードを提供するべきではありません。Webルートの外部にリポジトリを設定し、post-receiveフックを使用してコードをWebルートにコピーする方がはるかに優れています。これはここで概説されているようです: Gitプッシュを使用してプロジェクトをデプロイします

于 2013-02-15T19:56:14.977 に答える
1

Gitは(元々)作業コピーを同期するためのものではなく、Gitのコミット/ブランチ/参照などであるリポジトリを対象としています。

あなたがしたいことは、リモートチェックアウトと呼びます。他にも何百もの方法があります。私には2つのアイデアがあります。ssh接続をセットアップすると、大きな作業が完了します。

1)gitとsshを使用する

git push origin my_branch
ssh user@server "(cd remote-dir-where-your-repo-is; git checkout -f my_branch;)"

2)rsyncを使用する

rsync -av . ssh://user@server/dir --exclude=.git
于 2013-02-15T19:21:29.417 に答える