로컬 파일을 원격 Git 저장소에 동기화

로컬 파일을 원격 Git 저장소에 동기화

내 git 저장소는 회사 서버의 Linux에 있습니다. 나는 ssh내 Linux 상자로 가서 거기에서 파일을 편집했습니다.

질문

서버에 제대로 연결될 때까지 이것은 훌륭하게 작동합니다. 연결이 느리거나 존재하지 않는 경우에는 작업에 액세스할 수 없고 작업을 완료할 수도 없습니다.

잠재적인 솔루션

아마도 Linux 서버의 파일을 로컬 컴퓨터 디스크로 복사한 다음 로컬 파일의 변경 사항을 수신하고 이를 원격 서버에 미러링하는 스크립트를 실행할 수 있을 것입니다.

  • 저는 Git을 사용하고 있습니다. 모든 솔루션에는 git 파일도 포함되어야 합니다.
  • 연결이 끊어지면 로컬 파일 작업을 계속할 수 있어야 하며 연결이 설정되면 스크립트는 변경 사항을 원격 서버에 미러링합니다.
  • 내 컴퓨터는 Mac OSX Lion을 실행합니다.

답변1

질문의 표현 방식으로 볼 때 완전히 확실하지는 않지만 비분산 버전 제어 시스템(svn, csv 등)에서 분산 버전 제어 시스템(예: git)으로 마이그레이션할 때 그런 것 같습니다. , 문제가 발생할 수 있습니다.

Git에서 원하는 기능을 무료로 얻을 수 있다는 사실이 밝혀졌습니다! git 저장소를 사용하려는 컴퓨터에 복제하고( git clone <remote-repo>) 잘 작동한 다음(코드, git 추가, git 커밋, 헹구기 및 반복) 작업이 끝나면 원격 저장소로 다시 푸시하고 네트워크를 통해 잘 작업하면 됩니다. 연결( git push origin master또는 기본값을 사용하지 않는 경우 원격/지점이 호출되는 이름). Git 다운로드 하나가득한기본적으로 모든 기록을 포함하여 저장소의 복사본이 생성되므로 인터넷에 연결되어 있지 않아도 문제가 되지 않습니다. 인터넷이 복원되면 원격 컴퓨터와 계속 작업하고 동기화할 수 있습니다.

모든 커밋을 자동으로 푸시하는 방법을 찾고 있다면 다음을 확인하세요.자식 후크. 커밋 후 후크가 원하는 것일 수 있습니다. .git/hooksgit 저장소의 디렉터리 로 이동하여 파일 이름을 post-commit.sample로 바꾸 post-commit거나 파일을 만들고 실행 가능한지 확인하세요( chmod +x post-commit없는 경우). 이제 이 스크립트에 입력한 모든 내용은 제출 후 즉시 실행됩니다. 예를 들어 다음과 같습니다.

#!/bin/sh
git push origin master

또한 post-receive원격 시스템의 후크를 사용하여 로컬 저장소에서 푸시가 수신될 때마다 특정 작업을 수행할 수도 있습니다.

편집하다:댓글에서 "수동 푸시가 작동하지 않습니다"라고 말했지만 git은 SSH를 통한 푸시를 지원합니다. 이는 아마도 서버를 관리하는 방법일 것입니다. 그렇지 않은 경우 FTP를 통해 푸시할 수도 있습니다(전율) 및 HTTP[S]를 포함한 기타 프로토콜(서버를 올바르게 구성한 경우) 아마도 git을 이런 방식으로 사용하는 것을 고려해야 할 것입니다. 왜냐하면 그것이 바로 이런 목적으로 설계된 것이기 때문입니다.

답변2

올바른 방법은 서버에서 당기거나 밀어내는 것입니다. 문제는 이것을 어떻게 자동화할 것인가이다. 글쎄, 약간의 작업만 하면 파일이 변경될 때마다 서버의 별도 분기에 자동으로 푸시되는 것을 함께 만들 수 있습니까?

관련 정보