git

#24 깃(Git) - 푸시(Push)와 풀(Pull)

에이블디 2021. 12. 3. 18:19

안녕하세요! 에이블디 입니다!

 

여러분! 지난 시간에 로컬 리포지토리와 리모트 리포지토리를 연결한 것 기억나시죠?

로컬 리포지토리와 리모트 리포지토리를 연결했으니 로컬 리포지토리의 파일을 리모트 리포지토리에 올릴 수도 있고, 리모트 리포지토리에 있는 파일을 로컬 리포지토리로 내려받을 수 있게 되었습니다.

이때 로컬 리포지토리의 파일을 리모트 리포지토리로 올리는 것을 '푸시(Push)'라고 하고, 리모트 리포지토리에서 로컬 리포지토리로 내려받는 것을 '풀(Pull)'이라고 합니다.

 

이번 시간에는 푸시와 풀에 대하여 배워보도록 하겠습니다!

 

먼저 푸시부터 해보도록 하겠습니다!

지난 시간에 이어서 진행해 보도록 할게요!

터미널에서 다음과 같은 명령어를 입력해 주세요!

이제부터 로컬 리포지토리를 '로컬'이라고 하고 리모트 리포지토리를 '리모트'라고 하겠습니다.

$ git push -u origin master

위의 명령어를 살펴보자면 로컬에 있는 브랜치를 origin, 즉 리모트의 master 브랜치로 푸시하라는 명령입니다.

여기에서 '-u' 옵션은 로컬의 브랜치를 리모트의 master 브랜치에 연결하기 위한 것으로 처음에 한 번만 사용하면 됩니다.

터미널 창에서 푸시가 진행되는 것이 보이고 푸시가 끝나면 프롬프트($)가 나타납니다.

 

푸시가 끝났다는 것은 로컬의 커밋이 리모트로 올라갔다는 뜻입니다.

푸시가 끝났으면 깃허브 리포지토리가 열려있는 웹 브라우저 창으로 돌아와 새로고침을 해보시면 로컬에 있던 test-github.txt 파일이 리모트에 올라와 있는 걸 볼 수 있습니다.

한 번이라도 로컬과 리모트를 연결해서 푸시를 했다면 그다음부터는 더 간단하게 푸시를 할 수 있습니다!

한번 해볼까요?

로컬에서 test-github.txt를 열고 'push!!!'를 추가 입력한 뒤 저장해 주세요!

위와 같이 입력하고 저장을 완료하셨다면 이제 수정된 test-github.txt 파일을 'add push'라는 커밋 메시지와 함께 커밋해 주세요!

$ git commit -am "add push"

커밋이 된 것을 확인하시고, 새로운 커밋이 만들어졌으니 리모트에 푸시해야겠죠?

이미 앞에서 로컬 브랜치와 origin의 master 브랜치를 연결했기 때문에 다시 파일을 푸시할 때는 git push라고만 입력하면 됩니다!

바로 실습해 볼까요?

$ git push

푸시가 된 것을 확인하고 다시 한번 웹브라우저의 깃허브 리포지토리 화면을 새 로고 침해 보세요!

파일 이름 오른쪽에 최신 커밋 메시지가 보이시죠? 오른쪽 상단에 커밋수와 커밋한 시간도 바뀌어 있네요!

그럼 파일 목록에서 test-github.txt를 눌러볼까요?

방금 수정하여 커밋한 'push!!!'까지 내용이 잘 들어간 것을 확인할 수 있습니다!

 

이번엔 풀도 해봐야겠죠?

 

그럼 로컬에서 풀을 받을 새로운 파일이나 수정된 파일이 깃허브의 리모트 리포지토리에 있어야겠죠?

보통 로컬과 리모트를 연결한 후 로컬의 커밋을 리모트 쪽에 푸시하는 방법을 많이 사용하지만, 깃허브 사이트에서는 직접 파일을 만들거나 수정하고 커밋할 수도 있습니다.

로컬 리포지토리를 사용할 수 없는 상황에 편리하게 파일을 만들고, 수정할 수 있겠죠?

 

그럼 풀을 받을 파일을 바로 만들어 볼게요!

깃허브의 리포지토리 화면에서 오른쪽 상단의 'Add file' 버튼을 누르면 두 가지 옵션이 나오는데 우리는 새로운 파일을 만들 거기 때문에 'Create new file'을 눌러줍니다!

맨 위에 파일 이름을 입력하는 곳에 'test-github2.txt'라고 입력하고 내용은 'pull!!!'을 입력해 줍니다.

위의 이미지처럼 다 입력을 하셨으면 화면 아래로 이동해 주세요.

Commit new file이라고 되어있는 곳에 기본적인 커밋 메시지 'Create test-github2.txt'가 입력되어 있는 걸 볼 수 있습니다.

이 메시지를 그냥 사용하셔도 되고 원하는 내용으로 수정하셔도 되는데, 저는 기존의 메시지를 그대로 사용하겠습니다.

커밋 메시지를 작성하고 'Commit new file'버튼을 눌러줍니다.

리모트 리포지토리에 새로운 커밋이 추가되었네요!

 

이제 리모트에서 로컬로 파일을 내려받아 보도록 하겠습니다!

 

리모트 리포지토리에 있는 파일을 다른 사용자가 수정했거나 깃허브 사이트에서 직접 커밋하면 로컬 리포지토리와 차이가 생기게 됩니다.

이럴 때는 리모트 리포지토리와 로컬 리포지토리의 상태를 같게 만들기 위해 리모트 리포지토리의 소스를 로컬 리포지토리로 가져오는데요, 이것을 '풀(pull)'이라고 합니다.

개발자들 사이에선 '풀 땡긴다'라는 말로도 자주 쓰입니다.

 

그럼 이제 풀을 땡겨보도록 하죠!

 

방금 깃허브 사이트에서 test-github2.txt 파일을 새로 만들어죠? 그러므로 로컬 리포지토리에는 아직 test-github2.txt 파일이 없습니다.

터미널 창에서 ls 명령어를 사용해 디렉터리 안에 어떤 파일이 있는지 확인해 보세요.

# ls

로컬에서 만든 test-github.txt 파일 하나만 있는 걸 볼 수 있네요!

 

그럼 아래의 명령어를 입력해 볼까요?

$ git pull origin master

명령어의 의미를 보자면 origin(리모트 리포지토리)의 내용을 master(로컬 리포지토리) 브랜치로 가져온다는 의미입니다!

리모트 리포지토리에서 파일을 가져오는 과정이 화면에 나타나고, $가 화면에 표시되면 가져오기가 완료된 것입니다.

 

ls 명령어로 디렉터리에 변화가 생겼는지 확인해 볼까요?

$ ls

test-github2.txt가 로컬 리포지토리에 들어와 있네요!!

 

마지막으로 git log 명령어로 커밋 로그도 확인해 봅시다!

$ git log

깃허브 리모트 리포지토리에서 만들었던 'Create test-github2.txt'라는 커밋이 로컬 리포지토리 커밋 로그에도 나타나는 것을 확인할 수 있습니다!

 

오늘은 깃과 깃허브를 사용하면서 가장 많이 사용하게 될 푸시와 풀에 대하여 공부해 보았습니다!

 

다음 시간에도 깃과 깃허브를 더 많이 알아보도록 해요!

 

그럼 여러분 다음시간에 만나요!