💻Codeit에서 교육하는 커리큘럼을 바탕으로 정리하였다.
지금까지 배운 내용을 바탕으로 알아보자.
만약 로컬 레포지토리와 리모트 레포지토리가 다른 방식으로 작업될 경우가 실제상황에서 자주 발생한다. 이러한 상황에서 git push
를 하면
로컬 레포지토리를 수정하는 동안 리모트 레포지토리에 변화가 생긴다면 git push
가 되지 않는다. 실무에서 git 사용할 방법에 순서를 매겨보자.
git pull
git pull
로 리모트 레포지토리의 최신 커밋을 가져와 로컬 레포지토리에 merge
하는 것까지 해야한다.$ git pull --no-rebase # merge
$ git pull --rebase # rebase
$ git pull --ff-only # fast-forward only
git add .
, git commit
을 하면 히스토리 확인하면 merge 된 것을 확인할 수 있고, GitHub
에서도 확인할 수 있다.여러 개발자가 협업을 할 때는 리모트 레포지토리가 가장 중심이자 우선이 되니 git pull
을 우선하는 것을 습관화하자!!👍
git pull
은 브랜치가 가리키고 있는 커밋 이전에 이루어진 모든 커밋들을 가져오는 것을 의미하는데, merge
를 하지 않고 커밋을 가져오게만 하는 커맨드가 존재한다
$ git fetch
git fetch
커맨드를 사용하는 이유는 다른 개발자들끼리 협업을 하는 상황에서 파일을 git pull
하기 전에 그 파일을 먼저 확인 후 merge
를 하고 싶다면 git fetch
를 사용하는 것이다. 그래서 git pull
할 내용이 의심이 될 경우 git fetch
로 리모트 레포지토리의 브랜치 내용을 가져오기만 하는 것이 좋다.
origin에 있는 premium 브랜치의 커밋(리모트 레포지토리)이 로컬 레포지토리로 들어왔다는 의미이다. 리모트 레포지토리와 로컬 레포지토리간 커밋 차이를 확인해보자. git diff
는 두 커밋 간 차이와 두 브랜치 간 차이를 다 확인할 수 있는 커맨드이다.
$ git diff premium(Local repository) origin/premium(Remote repository)
차이점을 확인하고 해결할 수 있는 방법은 2가지가 있다.
git push
나는 2번째 방법을 이용해서 해결할 것이다. 잘못된 부분을 수정 후
$ git merge
$ git add.
$ git commit -m "커밋 메세지"
$ git push
정리하면 git fetch
는 리모트 레포지토리에서 가져온 브랜치의 내용을 머지하기 전에 점검해야할 필요가 있을 때 사용하거나 리모트 레포지토리에 있는 브랜치의 내용과 내가 작성한 코드를 비교해서 잘못된 부분이 없는지 검토해야할 때 사용하는 커맨드이다!
$ git blame
어떤 파일의 특정 코드를 누가 작성했는지 찾아내기 위한 커맨드이다.
$ git show [아이디]
특정 커밋을 누가(Author) 커밋을 한 것인지, 언제(Date) 커밋을 작성한 건지 확인하는 커맨드이다.
위의 2가지 커맨드들은 협업하는 개발자들끼리 책임감이 있고, 신중하게 커밋을 하게 하는 커맨드라 생각할 수 있다.🫡🫡🫡🫡🫡🫡🫡🫡🫡🫡🫡
$ git revert [되돌리고 싶은 아이디]
git revert
커맨드를 실행하면 특정 커밋 시점으로 되돌려져 있는 것을 볼 수 있다.
그렇다면 git reset
과 git revert
의 차이점은 무엇일까?
로컬 레포지토리와 리모트 레포지토리를 모두 git push
한 상태에서 로컬 레포지토리를 git reset
했다고 생각해보자. 그리고 다시 git push
를 하면 실행이 되지 않는다. 그림과 마찬가지로 이전 커밋을 push
하려는 것이기 때문이다.
이럴 때는 git revert
커맨드를 실행해서 이전 커밋과 같은 상태일지라도 새로운 현재 커밋을 만든 다음 push
를 해줘야한다. 이처럼 git
을 이용해서 git push
를 할 때에는 신중하게 해야한다!!
git revert
커맨드는 하나의 커밋뿐만 아니라 여러 커밋을 동시에 되돌릴 수 있다.
여러번 실행됬던 README.md
파일을 처음 커밋한 상태로 revert
할 때에는
$ git revert [돌아가려는 커밋]..[되돌리려는 커밋]
이런 식으로 범위를 지정해서 git revert
하면 범위 안의 커밋들이 revert
된 것을 확인할 수 있다.
협업을 위한 툴인 git
, GitHub
는 사용하기 편리하게 만들어진 것이지만, 그만큼 지켜야할 것들이 많다. 우선 GitHub
에서 많은 코드를 보고 코드를 스스로 리뷰해보고 혼자서 사이드 프로젝트로 git
에 대해 알게 된 다음 많은 커맨드를 실행해보자.