단일 개발자 GIT 워크 플로우 (간단한 FTP에서 이동)


11

VCS로 이전하는 것이 합리적인지 결정하려고합니다. 저는 소규모 조직 (5 명)의 단일 웹 개발자입니다. VCS (Git)는 버전 제어, 오프 사이트 백업, 중앙 집중식 코드 저장소 (집에서 액세스 할 수 있음)와 같은 이유로 생각합니다.

현재는 라이브 서버에서 일반적으로 작업합니다. FTP를 사용하여 수정 한 후 저장 한 다음 다시 업로드하고 새로 고칩니다. 편집은 일반적으로 CMS의 테마 / 플러그인 파일 (예 : concrete5 또는 Wordpress)에 대한 것입니다. 이것은 잘 작동하지만 백업 및 버전 제어는 제공하지 않습니다.

이 절차에 VCS를 통합하는 가장 좋은 방법이 궁금합니다. 회사의 웹 서버에서 Git 서버를 설정하려고 생각하지만 클라이언트 계정 (일반적으로 동일한 서버의 VPS)으로 변경 사항을 푸시하는 방법은 확실하지 않습니다. 직접 변경합니다.

또한 저장소를 잘 나타내는 것이 무엇인지 잘 모르겠습니다. 각 클라이언트의 웹 사이트에 고유 한 저장소가 있습니까?

통찰력이나 경험이 도움이 될 것입니다. 어떤 방법 으로든 Git의 모든 기능이 필요하다고 생각하지는 않지만 기본 버전 제어 및 사실상 클라우드 액세스가 실제로 유용합니다.

편집 : 가장 합리적인 것처럼 보이는 두 가지 옵션으로 좁혔습니다. 첫 번째는 ZweiBlumen의 답변을 기반으로 하며 라이브 서버에서 편집하고 거기서부터 (외부) Git 서버로 커밋합니다. 이것은 내 워크 플로우가 많이 변경되지 않는다는 이점이 있습니다 (커밋을 만드는 추가 단계가 있지만 그렇지 않으면 동일합니다).

두 번째 옵션은 XAMPP를 사용하여 로컬로 작업 한 다음 로컬 시스템에서 변경 사항을 커밋하는 것입니다. 사이트가 게시 될 때만 로컬 컴퓨터에서 완성 된 기사를 웹 서버에 업로드합니다 (Git에 대한 최종 커밋 직후). 이론 상으로는 괜찮은 것처럼 보이지만 그 이후에 사이트를 수정하고 라이브 서버에서 (일반적으로하는 것처럼) 만들면 로컬 리포지토리에서 변경된 파일을 수동으로 복사 한 다음 해당 변경 사항을 커밋해야합니다. 힘내 서버. 이것은 지나치게 복잡해 보이고 현재 워크 플로우에서 너무 많이 벗어난 것 같습니다.

나는 균형에 내가 옵션 # 1을 줄 것이라고 생각하고 내가 어떻게 진행되는지 봅니다.


1
git (또는 다른 분산 VCS)에 대해 기억해야 할 것은 모든 리포지토리는 적어도 기술적으로는 피어라는 것입니다. 로컬 리포지토리는 라이브 서버 또는 백업 리포지토리의 것과 같은 "실제"입니다. 그것들이 구조를 제공하는 것이 워크 플로 정책입니다. 따라서 실제로 라이브 서버에서 일차 작업을 계속하고 싶다면 다음과 같이 할 수 있습니다.
comingstorm

고마워요. Git의 고유 한 유연성으로 인해 '모범 사례'시작점을 찾기가 어려워집니다. 이는 숙련 된 사용자의 POV의 강점이지만 멍청한 사람의 약점입니다!
melat0nin

답변:


3

내가하는 일은 (Subversion을 사용하지만 Git 과도 함께 작동합니다) 모든 것을 하나의 Subversion 저장소에 커밋하지만 필요에 따라 프로젝트, 브랜치, 태그로 나눕니다. 그런 다음이 리포지토리를 라이브 서버로 체크 아웃합니다. 따라서 개발자 컴퓨터에서 변경을 수행하고이를 저장소에 커밋 할 때 라이브 서버에서 체크 아웃 된 사본을 업데이트하여 변경 사항을 적용하는 경우가 종종 있습니다. 추가 보너스는 라이브 서버에서 빠른 수정이 필요한 경우 서버에서 저장소로 커밋하고 내 dev 컴퓨터에서 작업 사본을 업데이트한다는 것입니다.

나는 이것을 관리하는 다른 방법이 있다고 확신하지만, 이것은 매우 간단하며 나는 당신과 정확히 같은 상황에 있습니다 : 소규모 조직의 단일 개발자 (4 명).


1
답장을 보내 주셔서 감사합니다! 즉, 스냅 샷을 로컬 컴퓨터로 가져 와서 변경하고 커밋 한 다음 라이브 서버에서 가져 오기 요청을합니까 (SSH를 통해)? 변화가 정말 작다면? 개발을 위해 로컬 웹 서버를 실행합니까? (간단한 CSS 변경을
위해이

1
사소한 CSS 변경의 경우 서버에서 직접 변경 한 다음 해당 변경 사항을 서버에서 리포지토리에 커밋합니다. 사이트에서 더 많은 양의 작업을 수행해야 할 때 리포지토리에서 최신 버전의 사이트로 내 dev 컴퓨터의 사이트를 업데이트합니다. 리포지토리에 커밋하는 한 변경 사항 (서버 또는 개발자 컴퓨터)을 실제로 만드는 것은 중요하지 않습니다.
ZweiBlumen

어떤 도구를 사용합니까? FTP가 서버에서 직접 파일을 변경 한 다음 SSH 세션이 백그라운드에서 열려 Git 서버에 대한 커밋을 반복합니다.
melat0nin

1
그렇습니다, 기본적으로입니다. 사실 저는 Subversion을 사용합니다. Linux 서버뿐만 아니라 Windows에도 사이트가 있습니다. Windows I에서 원격 데스크톱을 사용하면 TortoiseSVN을 사용하여 CSS를 변경하고 커밋합니다. Linux에서는 SSH 세션과 vim을 사용하여 변경합니다 (그러나 변경 사항을 FTP로 지정할 수도 있습니다).
ZweiBlumen

나는 며칠 동안 해왔 던 SSH를 통해 서버에서 편집 한 다음 서버에서 편집하겠다는 제안을 해왔다. 정말 잘 작동하는 것 같습니다, 감사합니다!
melat0nin

2

특정 지점으로 푸시 할 때 웹 서버 데이터 디렉토리 를 자동으로 업데이트 ( 보안상의 이유로 내보내기 가 선호 됨) 하는 post-updatehook 을 작성하는 것이 다소 쉽습니다 git archive.

따라서 git 저장소를 보안상의 이유로 웹과 다른 서버에 배치해야합니다. 물론 더 큰 변경 사항을 테스트하려면 테스트 서버가 필요합니다.이 변경 사항은 로컬 컴퓨터에 있거나 다른 지점으로 푸시하여 업데이트 할 수 있습니다. 두 경우 모두 간단히 커밋 및 푸시를 수행하여 간단한 맞춤법 및 CSS 수정을 위해이를 무시할 수 있습니다.


1

다음 단계를 따르십시오.

  1. 원격 푸시 / 풀에 적합한 공개 / 개인 키 쌍으로 원격 서버를 설정하십시오.
  2. 두 가지 테스트 및 릴리스 설정
  3. 테스트 지점에서 테스트 환경을 사용하여 로컬로 개발
  4. 릴리스 브랜치와 병합하고 원격 서버로 푸시 할 때
  5. 최신 버전의 릴리스로 업데이트하려면 원격 서버에 연결하십시오.

웹 사이트 당 하나의 리포지토리를 설정하여 서로 혼잡하지 않도록하십시오. 별도의 분기를 사용하면 현재 "양호한"버전 잠금을 현재 작업중인 것으로 단계적으로 설정하지 않아도됩니다.


그래서 올바르게 이해하고 있습니다-Git 용 서버 1 개, 라이브 웹 서버 2 개 및 로컬 개발 시스템 1 개가 있습니다. 개발이 로컬로 수행 된 다음 라이브 서버를 업데이트하기위한 후크가있는 Git 서버로 푸시됩니까?
melat0nin

@ melat0nin 그렇게하는 방법 중 하나입니다. 라이브 서버를 git 서버에서 cron 작업으로 가져올 수 있습니다. 또는 2 대의 컴퓨터를 가질 수 있습니다. 로컬 개발 시스템 및 라이브 프로덕션 웹 서버 그렇게하면 개발자 컴퓨터에서 프로덕션 컴퓨터로 리포지를 밀어 넣을 때마다 최신 릴리스 지점으로 업데이트됩니다.
Spencer Rathbun
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.