본문 바로가기
Git

[Git] 스토리로 이해하는 git 명령어

by LWM 2023. 3. 26.
반응형

 * 시뮬레이션을 하며 빈번하게 사용될 명령어

- git status

- git log

 

Git 스토리 1화

해양대 프로젝트가 시작되었다. 부장님은 팀원들이 개발환경을 셋팅할 수 있도록 공통팀에 전화하여 프로젝트 압축파일을 요청했고, 공통팀은 서둘러 준비된 압축파일을 부장님께 보내면서 'jdk하고 tomcat, 이클립스 파일보냈고~  (서버)소스코드는 1시간내로 git repository url 보낼테니까 거기꺼 받아다가 쓰면돼~!' 라고 말하고는 전화를 끊었다.

 

그리고 공통팀은 곧바로 해양대 팀원들이 스프링 소스코드를 받아서 개발에 착수할 수 있도록 다음과 같은 절차로 형상관리 작업을 하였다.

 

  1. gitlab에 새로운 repository 생성
  2. git init
  3. git add .
  4. git commit -m"스프링 서버 최초 배포"
  5. git remote add origin [gitlab repository URL]
  6. git push origin master

 

부연 설명

  • git add .
    - objects 디렉토리와 HEAD 이진파일 영향
    - 스테이징되거나 언스테이징될 때 HEAD이진파일이 계속 업데이트되고 objects파일은 최초 add할때만 업데이트됨

  • git commit
    - logs / objects / COMMIT_EDITMSG / index 파일 영향
  • git remote add origin [gitlab repository URL]
    - config 파일 영향

 

 

형상관리 작업을 마친 공통팀은 부장님께 작업을 마쳤다는 내용과 함께 git repository url을 카톡으로 전송하였다. 부장님은 해당 내용을 확인후 파일서버에 올리고 팀원들에게 '서버 소스코드가 관리되는 깃랩 URL 파일서버에 올려놓았으니 내려받으세요' 라고 말하였다. 팀원들은 곧바로 내용을 확인후 다음과 같은 절차로 소스코드를 내려받았다.

 

7. git clone

 

부연 설명

  • git clone

    해당 명령어는 아래 명령어들을 내포하고있다.

    1) git init
    2) git remote add
    3) git fetch
    4) git checkout
    5) git merge

 

다음편에 계속~!

 

 

 

 

 

 

 

Git 스토리 2화

서버 소스를 내려받은 팀원들은 부장님께 소스를 받았다고 보고하였고, 보고 받은 부장님은 팀원들에게 다음과 같이 말하였다. "개발 착수전에 로컬에서 개인 브런치 먼저 만들고 원격에 올려주세요~!"

이를 들은 팀원들은 다음과 같은 절차로 작업을 진행하였다.

 

  1. git branch cm07 / git checkout -b cm07
  2. git checkout cm07 (git checkout 으로 브랜치 생성 시 생략)
  3. git push origin cm07

 

부연 설명

  • git checkout
    - HEAD와 index 파일에 영향

 

작업을 하고 난뒤 팀원들은 개발을 시작하려고하는데 갑자기 부장님이 이런 말씀을 하신다.

"넥사크로 라이센스 master에 업데이트 해놓았으니 풀받으세요~!"

이 말을 들은 팀원들은 다음과 같이 작업하였다.

 

  1. git fetch
  2. git checkout master
  3. git pull origin master
  4. git checkout cm07
  5. git merge master

 

부연 설명

  • git fetch
    - objects 폴더와 FETCH_HEAD 파일에 영향
    - 리모트 저장소의 브랜치 정보와 최신 커밋 정보를 갱신하고 리모트에 있는 새로운 커밋 정보를 다운로드
  • git pull
    - objects / FETCH_HEAD / index / ORIG_HEAD 영향
    - FETCH_HEAD는 가장 최근 실행한 git fetch의 결과인 최신 커밋 해시값과 메시지가 담겨있는 파일이다.
    - ORIG_HEAD는 이전에 작업하던 브랜치나 커밋을 가리키는 포인터다. git merge나 git rebase를 실행했을 때, 그 명령어가 실행하기 전의 HEAD 포인터를 저장한다.
  • git merge
    - objects / index / ORIG_HEAD 영향
    - 병합 후에는 커밋 작업이 이루어진다.

 

다음편에 계속~!

 

 

Git 스토리 3화

- 지난 이야기 -
1. 부장님이 개인 브런치 만들고 원격에 푸시하라고 하셨고.
2. 개발들어가기 전 DB접속 정보가 변경되어 pull 받으라고 하셨다.

이렇게 모든게 준비된 팀원들은 각자의 개인 브런치에서 개발을 시작하였고, 몇일간 모든 것이 순조롭게 돌아가고 있었다.

그러던 어느날, 희은이에게 문제가 생겼다. master 브랜치로 부터 내 로컬 개인 브랜치에 pull을 받으려는데 공통파일에서 처음 경험해보는 '충돌'이 발생한 것이다. 당황한 희은이는 구글링을 시전했으나 이해가 잘 가지않아 사수를 호출 하였고, 사수는 다음과 같은 절차로 진단 및 해결하였다.

 

  1. git branch
  2. git pull origin master
  3. git diff
  4. 파일 수정
  5. git add .
  6. git commit 
  7. git push origin master

 

그런데 희은이가 갑자기 아차 싶은 눈빛으로 사수를 바라보고 이렇게 얘기한다. "과장님 충돌해결한 결과 코드를 보니까 이렇게 하면 안될거 같아요.. 되돌려야합니다.." 이 말을 들은 사수는 이렇게 말하고는 작업을 진행하였다.  "그럼 이전 버전으로 되돌리지 않고 그 버전으로 새로운 커밋을 따줄게요"

 

  1. git revert
  2. git add .
  3. git commit 
  4. git push origin master

 

 

다음편에 계속~!

 

반응형