GitHub

깃 & 깃허브(Git & Github) PULL, PUSH 하는 법(+ 에러 대처법)

balabala 2023. 5. 8. 16:06
728x90
SMALL
목차
  • GIT PULL
  • GIT PUSH
  • PULL & PUSH 에러 대처법

 

GIT PULL

  github의 저장소에 내용이 변경되었거나 추가가 되었다면 git pull명령을 사용하면 된다. git pull 명령은 리모트 저장소 브랜치에서 데이터를 가져오고 그 데이터를 자동으로 현재 작업하는 코드와 Merge 시킨다.

  Github의 GitTest라는 저장소에 pull.txt라는 파일을 추가하고, git pull을 통해 로컬 저장소로 데이터를 가져오는 예시이다.

 

Add file -> Create new file를 통해 pull.txt 파일을 만든다. 내용은 원하는것을 적으면 된다.

 

  Visual Studio Code의 TERMINAL창에 git pull를 입력하면, GitTest 저장소에 우리가 추가했던 pull.txt 파일이 추가되는 것을 확인할 수 있다.

GIT PUSH

  로컬 저장소에 내용이 변경되었거나 추가가 되었다면 git push명령을 사용하면 된다. 로컬 저장소의 브랜치는 자동으로 리모트 저장소로 전송되지 않기 때문에 git push <remote> <branch>명령을 입력해야 하며 명시적으로 브랜치를 push해야 정보가 전송된다.

  로컬 GitTest 저장소에 push.txt라는 파일을 추가하고, git push을 통해 github 저장소로 데이터를 전송하는 예시이다.

 

git add push.txt 명령을 입력해 Staged 상태로 변경(새롭게 추적할 파일 추가)한다.

 

  git commit -m "add push.txt" 명령을 입력해 커밋을 해준다. -m 뒤에 comment는 자유롭게 입력하면 된다.

 

  git push origin master 명령을 입력해 push를 하고 나서 Github에 있는 GitTest저장소를 확인해보면, 추가한 push.txt가 추가된 것을 볼 수 있다.

 

  여기서 git push origin master 명령어를 입력했는데, origin은 remote이고 master은 branch이다.

  git branch 명령으로 브랜치를 볼 수 있는데, 기본적으로 Git은 master브랜치를 만든다. 브랜치는 저장된 커밋 사이를 이동할 수 있는 포인터 같은 것이라고 생각하면 된다.

 

  git remote 명령으로 현재 프로젝트에 등록된 리모트 저장소를 확인할 수 있다. 이 명령은 리모트 저장소의 단축 이름을 보여준다. -v 옵션을 주어 단축이름과 url을 함께 볼수도 있다. 저장소를 Clone 하면 `origin`이라는 리모트 저장소가 자동으로 등록되기 때문에 `origin`이라는 이름을 볼 수 있다.

SMALL
PULL & PUSH 에러 대처법

  github 저장소를 이용하면서 pull이나 push관련해서 에러가 생겨 제대로 작동하지 않는 경우가 있는데, 이번에는 아래 같은 상황이 생겼을 때 해결방법에 대해서 이야기 해보겠다.

(1) github 저장소로 git push 에러

  github저장소에서 clone해온 프로젝트를 로컬에서 수정 및 추가작업한 내용에 대해 git push명령을 할 때

Error : failed to push some refs to https:

  이는 github에서 한번도 pull없이 push를 할 경우 기존 github저장소의 내용과 commit 불일치로 몇몇 내용이 삭제되는 것을 막기 위해 에러 메세지를 발생시키는 것으로 이때는 git pull명령을 한번 입력하고 다시 git push하면 된다.

  상단 해결방안이 안되는 경우가 있는데 이때는 아래 명령을 사용해서 강제로 push를 하면 된다.

git push -f origin master

 

(2) git pull 에러(github 저장소 변경 내용 미적용)

  github저장소 프로젝트 내용 변경 이후 로컬 workspace로 git pull명령을 입력해도 commit은 바뀌는데, 프로젝트 내부 파일 코드의 내용이 변경되지 않는 경우가 있다. 이때는 아래 2개의 명령어를 입력하자.

git fetch --all
git reset --hard origin/master

  git fetch --all은 서버로부터 최신 데이터를 모두 확인하는 것이고, git reset --hard origin/master명령어는 로컬 workspace에 있는 모든 branch를 버리고 origin/master와 동기화 시킨다는 의미이다.

728x90
LIST