Git 푸시 인 프로덕션 (FTP)


130

FTP 서버에서 GIT 저장소를 프로덕션으로 푸시하는 쉬운 방법이 있는지 알고 싶습니다. 감사

답변:


162

최근 Git 위키 에 추가 된 도구들 :

René Moser의 git-ftp 는 FTP를 Git 방식으로 수행하기위한 간단한 쉘 스크립트입니다. git-ftp.sh를 사용하여 Git 추적 파일 만 FTP 서버에 업로드하십시오. FTP 서버는 마지막 업로드 이후에 변경되었습니다. 이렇게하면 시간과 대역폭이 절약됩니다. 다른 브랜치를 사용하더라도 git-ftp.sh는 어떤 파일이 다른지 알고 있습니다. 일반적인 FTP 클라이언트는 그렇게 할 수 없습니다.

Edward Z. Yang의 git-ftp 는 FTP로 Git 저장소에 파일을 업로드하고 새 파일을 전송하고 오래된 파일 만 제거하기 위해 Python으로 작성된 간단한 스크립트입니다.


3
git-ftp를 사용하면 하위 디렉토리 (예 : html5 상용구의 게시 폴더)를 지정된 ftp 디렉토리로 푸시하는 방법이 있습니까?

그리고 팀에 여러 개발자가 있다면 어떨까요? 이 스크립트를 계속 사용할 수 있습니까?
Trilliput

@Trilliput : 조금 늦었지만 네트워크의 중간 서버 / VM은 모두가 밀고있는 곳으로 github.com/ezyang/git-ftp#using-a-bare-repository-as-a -proxy
Pranav 웃다

github.com/banago/PHPloy 도 비슷한 일을하지만 서브 모듈과 함께 작동하므로 언급 된 도구 중 일부가 어려움을 겪을 것으로 보입니다 .
Simon East

git-ftp의 주요 문제 (스크립트 또는 파이썬이 확실하지 않음) 큰 파일 덩어리와 긴 파일 목록을 업로드 할 때 매우 나빴습니다.
indianwebdevil


11

PHPloy 가 Git 커밋을 FTP를 통해 원격 서버로 보내는 훌륭한 도구라는 것을 알았 습니다. 명령 줄에서 작동하며 PHP로 작성되었으며 하위 모듈의 변경 사항도 감지합니다.

https://github.com/banago/PHPloy

git commit ...
phploy -s staging
phploy -s production

끝난!

(면책 조항 : 잠시 동안 사용한 후 이제 일부 코드 패치 및 개선 사항에 기여하여 Windows 호환 가능합니다.)


10

Mac에 있고 전송 중이라면 다음 git-tranmit 스크립트 ( https://gist.github.com/379750 )를 권장합니다 . DockSend를 사용하여 마지막으로 업데이트 된 파일 만 보냅니다. DockSend에 익숙하지 않은 경우 http://www.panic.com/blog/2010/11/15-secrets-of-transmit/를 확인 하십시오 .

설정:

  1. cp git-transit / usr / sbin /.
  2. cd / usr / sbin
  3. chmod + x 자식 전송
  4. 라이브 앱에 대한 설정 드롭 전송
  5. git 저장소에서 git-transmit을 실행하십시오.

1
이 스크립트는 '마지막으로 업데이트 된 파일'을 선택하는 데 서투른 것입니다. 보다 우아한 솔루션을 위해이 포크 를 확인하십시오 .
quickshiftin

또한 추적 및 커밋되지 않은 파일 만 전송하려고 할 수 있습니다. 여기에 그냥 않는 작은 스크립트는 다음과 같습니다 gist.github.com/borisdiakur/37b8f512f6f8865b79c7은
borisdiakur

5

그것은 git의 목적이 아니며 엄격히 말해서입니다. 소스 컴파일 또는 처리를 필요로하지 않는 무언가를하는 경우에는, 구성된 웹 사이트 말할 완전히 HTML과 자바 스크립트 파일 및 웹 서버 및 사용에 REPO의 복제를 가질 수처럼의 git pull서버에서이 그것을 유지하는 방법을 최신. git 디렉토리 등을 숨기도록 웹 서버를 구성합니다. 그리고 그것은 보안 문제의 시작일뿐입니다.

어떤 종류의 컴파일이나 처리가 있다면 Ant , Maven , BuildR , SBT 등을 살펴 봐야합니다 .


29
이것의 유일한 문제점은 프로덕션 서버에 액세스 할 수없는 경우입니다. 즉, FTP 액세스 만있는 단순한 공유 호스팅 일 수 있습니다.
dodgy_coder 2016 년

4

Deployhq.com 을 사용 하면 매력처럼 작동하지만 리포지토리와 FTP 계정을 설정하기 만하면 됩니다.

현재 다음 버전 제어 시스템이 있습니다.

힘내, Subversion, Mercurial.

리포지토리 호스팅

  • 깃 허브
  • 비트 버킷
  • GitLab
  • 코드베이스

여기에 이미지 설명을 입력하십시오




1

Ruby 스크립트가 있습니다 -FTP 또는 SSH통한 Ruby git-deploy FTP 또는 SSH 를 통해 git repo에서 변경된 파일 만 업로드합니다.

다른 답변에서 언급했듯이 비슷한 작업을 수행하는 Python git-ftp.py 스크립트 가 있습니다.

다음은 git-ftp 의 쉘 스크립트 버전입니다 .

git-deploy 라는 Ruby gem 프로젝트도 있는데, 이를 통해 git pushHeroku 및 Azure 서비스와 같은 방식으로 명령을 사용하여 git remote를 통해 사용자 지정 배포를 설정할 수 있습니다 . 이를 위해 FTP를 통해 배포하기 위해 사용자 정의 방법을 작성해야 할 수도 있으며 프로덕션 서버에 대한 SSH 액세스 권한이 있다고 가정합니다.


0

코드를 프로덕션 환경에 넣는 경우 RPM 패키지와 같은 "설치 프로그램"을 사용하여 코드를 설치하는 것이 좋습니다. 이렇게하면 버전 스탬프가 찍히고 설치 프로그램 패키지를 활용하여 생산 코드 업데이트를 지원할 수 있습니다. Git은 실제 프로덕션 설치를 지원하도록 설계된 것이 아니라 코드 자체의 변경 사항을 추적하기위한 것입니다.

어떤 경우 든 .RPM (또는 EXE 등)이 구축 된 경우 프로덕션 시스템에 FTP로 FTP를 설치하여 다른 패키지처럼 설치할 수 있습니다.


5
글쎄, git은 실제로이 목적을 위해 아주 잘 활용할 수 있습니다. 태그를 확인하고 필요한 모든 설치 절차를 처리하기 위해 사후 점검, 사후 병합 등 후크를 작성하십시오. 우리는 RPM 패키지를 사용했지만 git으로 옮긴 후에는 너무 과장되었습니다.
d11wtq

0

원격으로 추가 한 다음 푸시 할 수는 있지만 코드를 푸시하는 것만으로는 충분하지 않으므로 작업 트리와 병합해야합니다. 가장 쉬운 방법은 다른 방향으로 가고 서버에 작업 트리를 가지고 가져 와서 병합하는 것입니다.



0

나는 이것을 알아 내기 위해 많은 노력을 기울였다. 다양한 소스 ( git-ftpINSTALL , git-ftpUPLOAD , git-ftpIssue , git-ftpPUSH ) 에서이 작업을 수행하는 쉬운 방법을 찾았습니다 . 참고로 읽을 수는 있지만 아래 단계별 프로세스를 언급 했으므로 필요하지 않습니다.

우선 : MAC OS에서 brew를 사용하여 git 및 curl 설치

brew install git
brew install curl --with-ssl --with-libssh2
brew install git-ftp

다음 명령을 실행하십시오.

git clone https://github.com/git-ftp/git-ftp.git
cd git-ftp
git tag # see available tags
git checkout <tag> # checkout the latest tag by replacing <tag>
sudo make install

자식을 사용하여 업데이트

git pull
git tag # see available tags
git checkout <tag> # checkout the latest tag by replacing <tag>
sudo make install

설정

git config git-ftp.url YourFtpServerName.Net
git config git-ftp.user FtpUserName
git config git-ftp.password YourPassword

모든 파일 업로드

git ftp init

또는 파일이 이미 존재하는 경우

git ftp catchup

작업 및 배포

echo "Hello StackOverflow" >> index.txt
git commit application/libraries/index.txt -m "I love StackOverflow"
git ftp push

오류 가있는 경우 : pathspec 'index.txt'가 git으로 알려진 파일과 일치하지 않습니다 . 파일이 아직 준비되지 않았으므로 파일을 추가하고 커밋을 시도하십시오.

git add application/libraries/index.txt
git commit application/libraries/index.txt -m "I love StackOverflow"

도움이 되었기를 바랍니다.


0

당신은 FTPloy를 시도 할 수 있습니다 ...

https://ftploy.com

"GitHub 또는 Bitbucket으로 변경 사항을 푸시하십시오."

"변경 사항을 서버에 자동으로 배치"

시도해 볼 수있는 하나의 무료 프로젝트가 있습니다. 나는 현재 작은 PHP 웹 사이트를 사용하고 있으며 꽤 잘 작동합니다. 사이트의 몇 가지 버그이지만 활성 프로젝트이므로 최소한 작업 중입니다.


1
이 답변을 조기에 게시했습니다. FTPloy는 '생산 준비'가 아니며 많은 버그가 있습니다. 나는 그것을 작동시킬 수 없었다. DeployHQ를 사용하고 있습니다.
Dave Thompson

0

MacOS를 사용하고 있고 GUI를 좋아한다면 https://gitftp-deploy.com/을 확인하십시오 .

Git을 사용하여 변경 사항을 추적하고 변경된 파일 만 FTP로 업로드하는 멋진 응용 프로그램입니다.

소규모 팀이있는 수십 개의 소규모 프로젝트에 대해 월별 요금을 지불하고 싶지 않은 경우 특히 유용합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.