Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Web Development

Git, GitHub, SSH 이용한 완벽한 작업흐름

by
Difficulty:IntermediateLength:ShortLanguages:

Korean (한국어) translation by Yeon-Jun Kwak (you can also view the original English article)

이 학습에서는 작업흐름에 중심을 맞춥니다. 특히, 우리는 우리 개인 서버에서 GitHub 저장소에 업데이트를 push 할때마다 프로젝트를 자동 업데이트 하기 위해  유용한 GitHub 서비스 훅들을 사용할것입니다.


동영상 학습


1단계 - Git 저장소 생성

가지고 놀만한 프로젝트가 필요하겠죠? 바로 해봅시다. 주로 사용하는 도구를 사용(개인적으로 Structure 추천)하여 awesomeProject 이름으로 새 디렉토리를 만들고 index.html 파일을 추가합니다. 시간이 가는동안 아무 마크업이나 입력하여 채우세요.

테스트 디렉토리 내에서 최초 Git 커밋을 만들어봅시다.

Git이 친숙하지 않다면 "Git으로 쉬운 버젼 관리"를 복습하기를 바랍니다.

명령창을 엽니다.

이런 익숙한 Git과 함께 집에 있는듯한 편함을 느껴봅시다. Git 저장소를 만들고 스테이징 영역에 모든 파일들을 추가하고, 최초 커밋을 생성합니다.


2단계 - GitHub에 올리기

다음 단계는 GiHub에 프로젝트를 올리는것입니다. 우리가 원하는 어떠한 컴퓨터/서버로부터든 이 프로젝트를 다운받기위해 저 방법으로 쉽게 git pull을 호출할 수 있습니다.

또, GitHub이 익숙하지 않거나 아직 계정이 없다면 우리의 휴식을 위한 터미널, Git, GitHub을 읽어보세요.

새 Git 저장소 생성으로 시작

Create a Git Repo

다음으로, 프로젝트에 대한 몇몇 세부사항 입력이 필요할것입니다. 아래와 같이 간단합니다:

Details

마지막으로, 이미 존재하는 Git 저장소로 작업시 아래와같은 실행이 필요합니다.

Git

위와같이 하여, 우리의 awesomeProject는 이제 GitHub에서 가능합니다. 간단합니다!


3단계 - SSH

이제, 프로젝트를 위해 서버에 저장된 몇 종류의 라이브 미리보기가 물론 필요합니다. 그러나 이것은 때때로 고생스러울 수 있습니다. 업데이트들을 GitHub에 push하고, 서버에 로그인하고, 수동으로 업데이트된 디렉토리를 전송하고, 기타등등. 허가되었을때, 단번에 처리할 수도 아닐수도, 하지만 그 날 여러 변경을 만들었을 때는 부담이 될 수 있습니다.

그러나 한번에 한단계씩. 4단계에서 이 딜레마에 태클을 걸 것입니다. 지금은 우리 서버 Git 저장소내에 pull 해봅시다. 그렇게 하기 위해 SSH가 필요합니다.

여러분의 호스트에 따라 SSH 증명은 매우 가벼울 것입니다. "SSH 호스트명"으로 구글 검색 해보면 필요한 명령들을 찾을 수 있을것입니다. 준비되면, 따라가봅시다:

예제로 내 개인 서버를 사용할것입니다.

그리고 이 두 줄로 들어갑시다!

SSH

다음으로, awesomeProject 저장을 위한 부모 경로에 cd로 이동합니다. 저는 cd domains/demo.jeffrey-way.com/html/ 입니다. 물론 수정은 여러분의 디렉토리 구조에 따릅니다.

Git 복제

GitHub 저장소를 지금 clone 합니다.

명령주고 몇 초 지난 뒤, 저 디렉토리는 이제 서버에서 사용가능함을 알기 전, 제 경우 http://demo.jeffrey-way.com/awesomeProject에서 보여질 수 있습니다.


4단계 - 연결 생성

여기서 중요한 문제는 거기엔 적어도 자동화된 연결이 아닌 우리의 GitHub 저장소와 우리 서버에 저장된 디렉토리 간에 특별한 연결이 없다는 것입니다. 예를들어, 만약 우리가 원본 파일들을 로컬 머신에 서 업데이트 한다면, 그리고 GitHub에 변경들을 push 한다면:

이런 변경들은 서버에 반영되지 않을것입니다. 물론 그렇지 않을것입니다! 그렇게 하려면 우린 - 다시한번 - 서버에 SSH로 진입해서, awesomeProject 디렉토리로 cd로 이동하고, 업데이트된 소스파일을 가져오기위해 또다른 git pull을 수행해야 합니다.

GitHub에 업데이트들을 push 했을때마다 이런 새 소스 파일들이 라이브 프리뷰 서버에 자동적으로 업데이트 된다면 대단한것 아닙니까?

아래와같이 우린 매우 쉽게 GitHub 서비스 훅들로 할 수 있습니다.

GitHub Service Hooks

위 페이지는 GitHub 저장소의 "Admin" 버튼을 클릭하고 "Service Hooks"를 클릭하여 접근할 수 있습니다. "Post-Receive URL" 옵션은 GitHub이 POST request를 특정 페이지에 매번 여러분이 GitHub 저장소에 push 할때마다 전송하기 위해 지정합니다. 이것이 정말 우리가 원하는것입니다!

"우리는 이들 URL들을 우리에게 push 할 때 POST requests와 함께 입력해넣을것입니다. push는 정보에 따라 전송."

이렇게 되게 하려면, 새로운 git pull 수행 처리를 다루는 하나 이상의 파일을  만들어야 할 것입니다. github.php 이라는 명칭의 파일 추가(또는 원하는 아무 이름이나) 하고 아래와 같은 내용을 추가합시다:

그러면 이렇게 생각하겠죠: "제프가 미쳤군. PHP String 안에 Bash 스크립트를 넣을 수 없는데 말야." 글쎄...예 그럴 수 있는데, 언젠가 깨닫겠죠 그것들은 홑따옴표가 아니라 역따옴표들이라는것을.

PHP에서 역따옴표들로 문장을 감싸면 Bash 스크립트로 취급될 것입니다. 실은, bash_exec 함수를 사용하는것과 동일합니다.

파일을 저장하고 여러분 서버의 awesomeProject 디렉토리에 업로드 합시다. 끝나면 그 파일 url을 복사하고 "Post-Receive URL" 입력란에 붙여넣습니다. 제 경우 url은 http://demo.jeffrey-way.com/awesomeProject/github.php 입니다.

With this in place, 여러분이 GitHub 저장소에 push 할 때마다 파일은 호출될 것이고, 손을 더 쓸 필요 없이 서버의 awesomeProject 디렉토리는 자동 업데이트 될것입니다. 멋지지 않나요?


더 알아보기:

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.