Git 협업하기

Joon_yyy's velog·2022년 11월 4일
0

Git 정복하기

목록 보기
5/5

5일차 Git 협업하기🧐

git 실무 지식

💻Codeit에서 교육하는 커리큘럼을 바탕으로 정리하였다.

  • 실제로 개발환경에서 git을 쓸 때 자주 만나게 되는 상황
  • 그 상황에서 써야할 커맨드

지금까지 배운 내용을 바탕으로 알아보자.

git push 전에 git pull을 해야하는 경우가 많다.

만약 로컬 레포지토리와 리모트 레포지토리가 다른 방식으로 작업될 경우가 실제상황에서 자주 발생한다. 이러한 상황에서 git push를 하면

로컬 레포지토리를 수정하는 동안 리모트 레포지토리에 변화가 생긴다면 git push가 되지 않는다. 실무에서 git 사용할 방법에 순서를 매겨보자.

  1. git pull
  2. 강의와는 다르게 conflict가 발생하지 않았다. 강의대로라면 git pull로 리모트 레포지토리의 최신 커밋을 가져와 로컬 레포지토리에 merge하는 것까지 해야한다.
    찾아보니 예전과는 다른 방법으로 conflict를 해결한다.

    $ git pull --no-rebase # merge
    $ git pull --rebase # rebase
    $ git pull --ff-only # fast-forward only

  1. 그 후 파일을 알맞게 수정 후 git add ., git commit을 하면 히스토리 확인하면 merge 된 것을 확인할 수 있고, GitHub에서도 확인할 수 있다.

여러 개발자가 협업을 할 때는 리모트 레포지토리가 가장 중심이자 우선이 되니 git pull을 우선하는 것을 습관화하자!!👍

git pull말고 git fetch도 있다.

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가지가 있다.

  1. 잘못된 코드를 추가한 개발자에게 함수를 지우고 다시 리모트 레포지토리에 올려달라고 하기
  2. 잘못된 부분을 알아서 해결하고 다시 git push

나는 2번째 방법을 이용해서 해결할 것이다. 잘못된 부분을 수정 후

$ git merge
$ git add.
$ git commit -m "커밋 메세지"
$ git push

정리하면 git fetch는 리모트 레포지토리에서 가져온 브랜치의 내용을 머지하기 전에 점검해야할 필요가 있을 때 사용하거나 리모트 레포지토리에 있는 브랜치의 내용과 내가 작성한 코드를 비교해서 잘못된 부분이 없는지 검토해야할 때 사용하는 커맨드이다!

누가 코드를 작성했을까?

$ git blame

어떤 파일의 특정 코드를 누가 작성했는지 찾아내기 위한 커맨드이다.

$ git show [아이디]

특정 커밋을 누가(Author) 커밋을 한 것인지, 언제(Date) 커밋을 작성한 건지 확인하는 커맨드이다.

위의 2가지 커맨드들은 협업하는 개발자들끼리 책임감이 있고, 신중하게 커밋을 하게 하는 커맨드라 생각할 수 있다.🫡🫡🫡🫡🫡🫡🫡🫡🫡🫡🫡

이미 Remote Repository에 올라간 커밋을 취소해야 한다면?

$ git revert [되돌리고 싶은 아이디]

git revert 커맨드를 실행하면 특정 커밋 시점으로 되돌려져 있는 것을 볼 수 있다.
그렇다면 git resetgit 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에 대해 알게 된 다음 많은 커맨드를 실행해보자.

0개의 댓글