팀원들에게 Git을 알려주기 위해 정리한 13가지 질문들

2022. 6. 7. 20:47예전자료/시스템공부합시다

1. Git이 뭐에요?
  • 형상 관리 도구(Configuration Management Tool)중 하나 입니다.
  • 참고로 형상 관리 도구는 버전 관리 시스템 이라고도 합니다.
  • Git은 소프트웨어를 개발하는 기업의 핵심 자산인 소스코드를 효과적으로 관리할 수 있게 해주는 무료, 공개소프트웨어 입니다.
Q1. 로컬과 원격서버의 차이를 알고 싶어요.
원격 서버라고 단어를 칭하는것 보단, 로컬 저장소와 원격 저장소라고 칭하는 것이 맞을거 같습니다. 

=>로컬 저장소는 내 개발 PC입니다. 
=>로컬 저장소에 저장 되어 있는 것들을 원격 저장소에 저장 하는 것으로 생각 하시면 됩니다.
 
2. Git 저장소를 어떻게 만들어요? (Git 프로젝트 환경 만들기 => git init)
  • 저장소를 초기화 하는 명령어가 git init 입니다.
  • 해당 명령어를 사용하면 프로젝트 안에 .git 이라는 폴더가 생성 되게 됩니다.
  • .git 이라는 폴더 안에는 저장소에 필요한 뼈대 파일들이 있습니다.
Q1. .git 폴더 안에 뭐뭐 들어가 있어요?
config => config 파일에는 해당 프로젝트에만 적용되는 설정 옵션이 들어 있습니다. 
description => description 파일은 기본적으로 GitWeb 프로그램에서만 사용하기 때문에 이 파일은 신경쓰지 않아도 됩니다. 
HEAD => HEAD 파일은 현재 Checkout 한 브랜치를 가르키고 있습니다. 
hooks/ => hooks 디렉토리에는 클라이언트 훅이나 서버 훅이 위치합니다. (나...중에 필요하면 보시면 됩니다)
info/ =>info 디렉토리는 .gitignore 파일처럼 버전 저장시 무시할 파일의 패턴을 적어 두는 곳 입니다. 하지만 .gitignore 파일과는 달리 Git으로 관리되지 않습니다. 
objects/ => objects 디렉토리는 모든 컨텐츠를 저장하는 데이터베이스입니다. 
refs/ => refs 디렉토리에는 커밋 개체의 포인터(브랜치, 태그, 리모트 등)를 저장합니다..
 
3. Git 이 관리할 대상으로 파일을 등록하는 방법이 뭐에요? (git add)
  • Git은 파일을 새로 추가하거나 변경하면 Git으로 파일 관리가 되지 않습니다.
  • Git으로 파일 관리를 하고 싶으면 작업 폴더 상의 변경 내용을 스테이징 영역으로 추가 해야합니다.
Q1. 스테이징 영역이 뭐에요?
실제 코드 작업 폴더와 Git 저장소 변경 이력 사이에 징검다리 역할을 한다고 생각 하면 됩니다. 
작업 폴더는 커밋할 준비가 안된 내용들을 자유롭게 수정할수 있는 공간이라고 생각 하시면 되고, 스테이징 영역은 Commit 할 준비가 된 파일들이 Git 저장소에 기록되기전 대기하는 장소라고 생각 하시면 됩니다.
 
4. Git 버전을 어떻게 만들어요? (git commit)
  • 코드 변경 사항을 하나의 버전으로 만드는 것을 뜻합니다.
  • 버전은 의미 있는 수정사항을 뜻하며, 해당 작업이 완결된 상태라고 가정 합니다.
  • 하나의 작업이 완결된 상태를 기록하는 것이 바로 commit 입니다.
Q1. Commit에 대해 좀더 설명 해주세요
파일 및 폴더의 추가/변경 사항들에 대해 기록을 하는 것을 말합니다.
Commit은 시간 순으로 저장되며, 최근 Commit 부터 거슬러 올라가면 과거의 변경 이력까지 전부 확인이 가능합니다. 
Commit은 40자까지 적을수 있으며, 적어놓은것에 따라 각 Commit을 구분할 수 있습니다.
 
 
5. Git 상태를 어떻게 봐요?(git status)
  • Untracked와 Tracked 상태
  • Unmodified(변경 없음)와 Modified(변경 발생) 상태
  • Staged 상태
Q1. 하단 상태의 파일들은 어떤 상태 일까요?
 
6. Git 과거의 버전으로 어떻게 돌아가요? (git revert)
  • 특정 커밋을 아예 날려버리는 행위 입니다.
    Q1. 어떤 식으로 revert기록이 남아요?
 
7. Git branch에 버전을 되돌리고 싶어요(git reset)
  • 시계를 다시 맞추는 것이라고 생각하시면 됩니다.
  • 시계를 다시 맞추면 다시 맞춘후 해당 흔적이 안남듯이, git reset을 하면 원하는 커밋으로 돌아가지만, 해당 돌아간 내역은 로그에 따로 남지 않습니다.
Q1. git reset이랑 git revert랑 차이가 뭐에요?
git revert는 이전 이력을 그대로 두고, 그 되돌릴 커밋의 코드만 복구 시키는 것 입니다.
git reset은 이전 이력을 남기지 않고, 되돌릴 커밋을 복구 시키는 것 입니다.
 
8. Git의 또다른 분기, branch 가 뭐에요? (git branch)
  • 브랜치란 독립적인 작업 폴더 입니다.
  • 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에 여러 작업을 동시에 진행 할 수 있습니다.
Q1. 브랜치를 그림으로 보고 싶어요!
 
 
 
9. Git branch 전환 어떻게 해요? (git checkout)
  • 호텔에서 퇴실할때 체크아웃이라는 말을 많이 합니다. 즉 체크아웃은 객실을 비우고 떠나는 것을 의미 합니다.
  • 현재 브랜치를 떠나 새로운 브랜치로 들어간다는 의미 입니다
Q1. 브랜치 간에 서로 이동하고 싶어요
git checkout 브랜치 이름
 
 
10. Git commit 끼리 합치고 싶어요 (git merge)
  • 각 분기된 커밋이 하나의 커밋으로 합치는 것을 merge라고 생각 하시면 됩니다.
Q. merge 와 rebase의 차이가 궁금해요!
각 분기된 커밋이 하나의 커밋으로 "합치는" 것을 merge,
각 분기된 커밋이 하나의 커밋으로 "이어지는" 것을 rebease
 
11. Git merge 할때 충돌이 낫어요 (git conflict)
  • 현재 브랜치와, 병합 하고자 하는 브랜치에서 같은 파일의 위치를 수정했을 경우, 사용자가 어느 것을 선택할 것인지 Git은 알수 없습니다.
  • 그래서 사용자에게 충돌난 부분을 직접 해결 하라고 요청 하는것을 git conflict 라고 합니다.
 
12. Git 원격 저장소에 변경된 버전을 추가 하고 싶어요 (git push)
  • 원격 저장소에 코드 변경분을 업로드 하기 위해서 사용하는 Git 명령어 입니다.
  • commit 으로 로컬 저장소에 신규 버전을 만들어 줘도 원격 저장소는 신규 버전이 있는지 모릅니다.  이에, git push를 날려줘야 그동안 로컬 저장소에 남겨놓은 코드 버전(commit)들이 원격 저장소로 전송이 됩니다.
Q1. 하나의 git 프로젝트에 여러 원격 저장소를 설정 할수 있나요?
정답은 설정할수 있다! 
다만 ssh 공개 키 설정을 잘 해줘야 한다..
https://velog.io/@adguy/git-%EC%97%AC%EB%9F%AC%EA%B0%9C-%EC%9B%90%EA%B2%A9-%EC%A0%80%EC%9E%A5%EC%86%8C-%EC%82%AC%EC%9A%A9%ED%95%B4%EC%84%9C-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%ED%95%9C%EA%B0%9C%EC%97%90-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0
 
13. Git 원격 저장소에서 로컬 저장소로 버전을 가져오고 싶어요 (Git pull, fetch)
  • fetch 
    • 원격 저장소로부터 최신 이력을 확인 할수 있습니다.
    • 각 저장소의 내용을 확인만 하고 로컬 데이터와 병합은 하고 싶지 않은 경우 사용 합니다.
    •  
  •  pull
    • 원격 저장소로부터 필요한 파일을 다운 + 병합합니다.
fetch
pull

 

'예전자료 > 시스템공부합시다' 카테고리의 다른 글

curl 이란?  (0) 2022.06.13
linux apt 명령어  (0) 2022.03.10
docker compose 로 php8 nginx 구성하기  (0) 2022.03.07
20210810 docker 실습  (0) 2021.08.10
20210809 docker 실습  (0) 2021.08.10