코드스테이츠/코드스테이츠 @ 개발 일지

[코드 스테이츠] 11일차, Git - Got it

Je-chan 2021. 7. 29. 21:28

얘도 공부해야 하다니

  오늘 내가 배운 것은 Git을 통해 코드를 버전 관리하고, Git의 명령어들을 익혀서 다른 사람들과 협업을 할 때에 어떻게 오픈 소스에 Contribute할 수 있는가에 대해서 배웠다. 어제도 얘기했지만 오늘까지 매칭 된 페어분께서 CLI 장인이셔서 그런가 코드 스테이츠에서 제공해주는 개념 외에도   " --help "와 구글링을 통해 우리가 스스로 독학으로 내용을 더 찾아서 공부했다.   

 

  Git은 내가 예전에 패캠으로 인강을 들었을 때도 쓴 적이 있다. 깃허브를 통해서 패캠 인강을 듣고 만든 것들을 업로드한 내용이다.  그런데 그때는 그냥 그렇게 쓰라고 하니까 썼지 이게 어떤 원리로 올라가는 건지 몰랐다. 인강에서도 git에 대한 강의가 있었지만 귀에 잘 들어오지 않았다. 그러나 오늘 코드 스테이츠의 기본의 기본적인 개념 설명과 페어 분과 함께 열심히 digging을 한 덕분에 확실한 개념 이해와 git의 동작 원리를 제대로 익힌 것 같다. 물론, 그렇다고 해서 Git에 대한 공부가 끝난 것은 아니지만. 


[ 오늘의 TODO ]

  1. 코드 스테이츠) Git 설치, 개념
  2. 코드 스테이츠) Pair-Programming (with Git)
  3. 패스트 캠퍼스) 인강 3개 이상 듣기 // optional
  4. 생활) 물 1L 이상 마시기
  5. 개선) 페어 프로그래밍할 때도 혼자 있을 때처럼 침착하게 오류 대처하기
    // 오늘도 오류 있을만한 프로젝트가 아니었다.

[ 오늘의 배움 ]

1.  Git의 명령어

  오늘은 Git의 명령어들과 왜 그렇게 Git이 작동하는지에 대해 많은 것을 알아보았다. 코드 스테이츠에서 배운 내용들이나 꿀팁들은 이렇게 공개된 곳에서 쓰면 안 되기에 나와 페어분이 찾아낸 것들 몇 가지만 적고자 한다.

 

  1) --help

   --help는 페어 분과 내가 스스로 뭔가 더 찾으려고 할 때 많이 사용한 것이다. 구글링보다 --help로 찾은 내용이 훨씬 많았다. 옵션처럼 달아주는 --help는 그 명령어를 사용할 때 사용 방법이나 그 명령어에 딸린 옵션들의 내역을 제공한다. 거기에 생략해도 되는 것과 생략하면 안 되는 것들도 적혀 있고 쓰임새 등도 많이 적혀 있었다. 페어분 덕분에 알게 된 옵션이다

 

  2) git reset [돌아가고자 하는 commit ID] VS git revert [초기화하고자 하는 commit ID]

  내가 쓴 저 말들이 정확히 맞는 말인지는 모르겠다. 다만 나와 페어분이 이해한 내용은 저렇게였다. 우리는 코드 스테이츠에서 reset에 대한 기본적인 개념을 익혔다. 그리고 우리는 한 가지 의문점에 봉착했다.

 

그러면 reset을 통해서 이전의 Commit으로 돌아갔는데 이후의 Commit으로 되돌아가고 싶을 땐 어떻게 하지?

 

  저 의문 하나에 모든 것이 시작됐다고 해도 과언이 아니다. 저 방법을 찾기 위해 엄청 노력했다가 여러 가지를 찾았다. 먼저 --help를 통해 찾은 내용 중에서 reset은 이 명령어 뒤에 git log로 확인되는 commit ID값(이게 ID 값이라고 해도 될지 모르겠지만, 어쨌든 일련번호 같은 게 commit마다 할당되어 있다) 을 넣어도 된다는 것을 확인했다. 그렇다면 우리는 지금 reset으로 뒤로 돌아온 시점에서 어떻게 하면 이 commit 보다 늦게 commit된 것들의 ID 값을 찾으면 되는 거였다. 그런데 git log는 reset을 통해 이동한 commit 그 이전의 commit 목록들만 나왔다. 되돌아가기 위해선 그 이후의 목록들을 불러야 했고 그렇게 해서 찾은 것이 밑의 네 개다.

전제 조건은 reset --hard는 하지 않고 reset만 한 상황에서 실험했다.
또, 전문 문서를 읽은 것이 아니라 실험으로 내가 파악한 기능이라서 실제 기능과 다를 수 있다.

1. git log master --remotes=origin 
       remote 되지 않은 local에만 머무르는 master 브랜치들을 보여준다
2. git log -g
       지금까지 commit이 된 순서대로 목록을 보여준다
3.  git log --all 
      remote, local 상관없이 모든 commit을 보여준다.
4. OEIG_HEAD
      --hard라 해도 reset 바로 이전의 commit은 위의 키워드로 되돌릴 수 있다.

 

  코드 스테이츠에서는 제시도 하지 않은 걸 찾아보겠다고 정말 몇 시간이고 노력했는데, 덕분에 절대 까먹지 않을 것 같다.

 

  그리고 위의 질문을 찾으려는 도중에 뜬금없지만 revert라는 명령어도 알게 됐다. revert는 reset과는 좀 다르게 해당 commit 때 추가한 내용들은 전부 delete 되고 단, commit ID는 동일하게 사용할 수 있는 것으로 파악됐다. 구글링을 해보니 해당 commit이 이미 Remote Repository에 push 됐을 때 내용을 변경하고자 할 때 쓰는 것이라고 한다. 

 


[ 오늘의  교훈 ]

1.  개발자는 페인트 칠하듯이 공부하는 거다.

  오늘 Sprint Review를 할 때 크루님께서 해주신 말씀이다. 구멍이 있는 벽에 처음 페인트 칠할 때는 그 구멍이 사라지지 않고 드러나 보인다. 하지만 계속해서 칠하다 보면 언젠가는 그 구멍이 없던 것처럼 보인다. 그것처럼 개발자는 반복학습을 통해서 익히는 것이라는 게 포인트였다. 

 

 

개발자는 외워서 개발하는 게 아니라 부딪히기를 반복해가며 개발하는 겁니다.

 

 

  해주신 말씀을 좀 짜깁기를 했는데 요약하면 저렇게 된다. 페어분이랑 둘이서 엄청 검색해보고 찾아보니 저 말씀이 무슨 뜻인지 알 것 같다. 일단 해보고, 안 되면 구글링을 하거나 --help를 찾아본다. 그런데 이게 절대 한 번에 외워지지 않는다. 그래서 계속해서 반복하게 되지만, 반복하니까 반복한 만큼 또 점점 기억에 남는 것 같다.  코드 스테이츠 수료하려면 아직 한~~~참이나 남아서 엄청나게 부딪히겠지만 그 부딪힘을 자연스러운 배움의 과정이라 생각하고 담대히 받아들이자!  

 

 

 

 

이런 반복 말고