git 초간단 튜토리얼

2024. 10. 31. 07:17· Development studies
목차
  1.  
  2. 1. 버전 관리의 필요성
  3. 2. Git 소개와 역사
  4. 3. Git의 3대 목적
  5. 4. Git 설치 및 시작하기
  6. Git 설치
  7. Git 실행
  8. 5. Git의 기본 흐름
  9. 6. 버전 생성과 관리
  10. 6.1 저장소 초기화
  11. 6.2 파일 생성 및 확인
  12. 6.3 상태 확인
  13. 6.4 파일 추적 시작 (Staging Area에 추가)
  14. 6.5 커밋 (버전 생성)
  15. 6.6 사용자 정보 설정 (최초 1회)
  16. 6.7 커밋 로그 확인
  17. 7. 파일 변경과 비교
  18. 7.1 파일 수정
  19. 7.2 변경 사항 확인
  20. 7.3 변경 사항 버리기
  21. 7.4 특정 커밋으로 돌아가기
  22. 8. 버전 되돌리기
  23. 8.1 커밋 추가
  24. 8.2 이전 커밋으로 되돌리기 (revert)
  25. 9. 브랜치 관리
  26. 9.1 브랜치 생성 및 확인
  27. 9.2 브랜치 이동
  28. 9.3 브랜치에서 작업
  29. 9.4 브랜치 병합
  30. 10. 브랜치 병합과 충돌 해결
  31. 10.1 충돌 상황 만들기
  32. 10.2 병합 시도 및 충돌 발생
  33. 10.3 충돌 상태 확인
  34. 10.4 충돌 해결
  35. 10.5 수정 사항 반영
  36. 11. 실습 예제 및 연습 문제
  37. 11.1 연습 문제 1: 파일 변경 및 커밋
  38. 11.2 연습 문제 2: 복수 파일의 변경 사항 확인
  39. 11.3 연습 문제 3: 브랜치 생성 및 작업
  40. 12. 팁과 주의사항
  41. 12.1 빠른 커밋
  42. 12.2 기본 에디터 설정
  43. 12.3 버전 삭제의 다양한 모드
  44. 12.4 로그 시각화
오픈소스 수업에서 git을 따로 배우는 파트가 있어 수업 내용을 간략히 정리했습니다.

 

1. 버전 관리의 필요성

  • 안전한 백업: 데이터 손실을 방지하고 작업 내용을 안전하게 보관합니다.
  • 파일명 관리: 복잡한 파일명 없이도 효율적으로 파일 버전을 관리합니다.
  • 변경사항 설명 기록: 변경 내용과 이유를 기록하여 추적할 수 있습니다.
  • 쉬운 공유: 팀원들과 최신 버전의 파일을 쉽게 공유하고 협업할 수 있습니다.

2. Git 소개와 역사

  • Git의 탄생:
    • 리누스 토르발스(Linus Torvalds)가 리눅스 커널 개발을 위해 만든 분산 버전 관리 시스템입니다.
    • 2005년에 처음 개발되었으며, 현재는 가장 널리 사용되는 버전 관리 시스템입니다.
  • Git의 성공 요인:
    • 매우 빠른 속도: 대용량 프로젝트에서도 빠르게 작동합니다
    • 단순한 구조: 이해하기 쉽고 사용이 간편합니다.
    • 비선형적인 개발 방식 지원: 분산 개발과 브랜치 관리에 최적화되어 있습니다.
    • 완벽한 분산: 중앙 서버 없이도 각자의 로컬 저장소에서 작업할 수 있습니다.

3. Git의 3대 목적

  1. 버전 관리: 코드의 변경 이력을 체계적으로 관리합니다.
  2. 백업: 작업 내용을 안전하게 저장하여 데이터 손실을 방지합니다.
  3. 협업: 여러 개발자가 동시에 작업하고 변경 사항을 병합할 수 있습니다.

4. Git 설치 및 시작하기

Git 설치

  • Git 공식 사이트: https://git-scm.com/
  • 설치 방법:
    • Windows: "Git for Windows" 설치 파일 다운로드 및 설치.
    • MacOS: Homebrew를 사용하는 경우 brew install git 명령어로 설치.
    • Linux: 배포판에 따라 패키지 관리자를 이용하여 설치 (apt, yum 등).

Git 실행

  • Windows:
    • Git Bash: 설치 후 시작 메뉴에서 "Git Bash"를 실행합니다.
  • MacOS 및 Linux:
    • 터미널에서 Git 명령어를 바로 사용할 수 있습니다.

5. Git의 기본 흐름

Git은 다음과 같은 세 가지 공간으로 구성됩니다:

  1. Working Directory (작업 디렉토리):
    • 실제로 파일을 수정하고 작업하는 공간입니다.
  2. Staging Area (스테이징 영역):
    • 커밋할 파일들을 임시로 저장하는 공간입니다.
  3. Repository (저장소):
    • 커밋된 변경 사항들이 저장되는 공간입니다.

!https://git-scm.com/book/en/v2/images/areas.png


6. 버전 생성과 관리

6.1 저장소 초기화

$ git init
  • 현재 디렉토리를 Git 저장소로 초기화합니다.
  • .git 디렉토리가 생성되며, Git 관련 데이터가 저장됩니다.

6.2 파일 생성 및 확인

$ nano hello1.txt
  • hello1.txt 파일을 생성하고 내용 입력.

예시:

$ cat hello1.txt
  • 파일 내용을 확인합니다.

6.3 상태 확인

$ git status
  • 현재 Git 저장소의 상태를 확인합니다.
  • Untracked files로 hello1.txt가 표시됩니다.

6.4 파일 추적 시작 (Staging Area에 추가)

git add hello1.tx
  • hello1.txt를 Staging Area에 추가합니다.
$ git status
  • Changes to be committed로 hello1.txt가 표시됩니다.

6.5 커밋 (버전 생성)

$ git commit -m "Message 1"
  • Staging Area에 있는 파일들을 커밋하여 저장소에 저장합니다.
  • m 옵션으로 커밋 메시지를 함께 작성합니다.

6.6 사용자 정보 설정 (최초 1회)

$ git config --global user.name "Your Name"
$ git config --global user.email "your.email@example.com"
  • Git 커밋에 포함될 사용자 이름과 이메일을 설정합니다.

6.7 커밋 로그 확인

$ git log
  • 커밋 이력을 확인합니다.

예시 출력:

commit abcdef1234567890abcdef1234567890abcdef12 (HEAD -> master)
Author: Your Name <your.email@example.com>
Date:   Wed Nov 1 12:34:56 2023 +0900

    Message 

7. 파일 변경과 비교

7.1 파일 수정

$ nano hello1.tx
  • 파일을 열어 마지막 줄의 3을 지우고 4라는 내용을 추가합니다.

7.2 변경 사항 확인

$ git status
  • Changes not staged for commit로 수정된 파일이 표시됩니다.
$ git diff
  • 워킹 디렉토리와 Staging Area의 차이점을 보여줍니다.

예시 출력:

-1
-3
+1
+

7.3 변경 사항 버리기

$ git reset --har
  • 워킹 디렉토리를 마지막 커밋 상태로 되돌립니다.
  • 변경 내용이 모두 삭제되므로 주의해야 합니다.

7.4 특정 커밋으로 돌아가기

$ git log
  • 되돌아가고 싶은 커밋의 ID를 확인합니다.
$ git checkout [커밋 ID]
  • 해당 커밋의 상태로 워킹 디렉토리를 변경합니다.
$ git checkout master
  • 최신 커밋 상태로 돌아옵니다.

8. 버전 되돌리기

8.1 커밋 추가

  • hello1.txt에 내용을 추가하고 커밋을 여러 번 합니다.
$ nano hello1.txt
# 내용 추가: R3
$ git add hello1.txt
$ git commit -m "R3"

$ nano hello1.txt
# 내용 추가: R4
$ git add hello1.txt
$ git commit -m "R4"

8.2 이전 커밋으로 되돌리기 (revert)

$ git log
  • 되돌리고 싶은 커밋의 ID를 확인합니다.
$ git revert [커밋 ID
  • 해당 커밋을 되돌리는 새로운 커밋을 생성합니다.
  • 에디터가 열리면 커밋 메시지를 수정하거나 그대로 저장하고 닫습니다.
$ cat hello1.txt
  • 파일 내용이 되돌려진 것을 확인합니다.

9. 브랜치 관리

9.1 브랜치 생성 및 확인

$ git branch apple
$ git branch google
$ git branch ms
  • 새로운 브랜치를 생성합니다.
$ git branch
  • 현재 브랜치 목록을 확인합니다.

9.2 브랜치 이동

$ git checkout app
  • apple 브랜치로 이동합니다.
$ cat work.txt
  • 파일 내용을 확인합니다.

9.3 브랜치에서 작업

$ nano work.txt
# 마지막 줄에 "apple work 4" 추가
$ nano apple.txt
# 내용 입력: "apple work 4"
$ git add .
$ git commit -m "apple work 

9.4 브랜치 병합

$ git checkout master
$ git merge apple
  • master 브랜치에 apple 브랜치를 병합합니다.

10. 브랜치 병합과 충돌 해결

10.1 충돌 상황 만들기

  • master 브랜치에서 수정:
$ git checkout master
$ nano work.txt
# 첫 번째 줄 수정: "master content"
$ git commit -am "master work 2
  • o2 브랜치에서 수정:
$ git checkout o2
$ nano work.txt
# 첫 번째 줄 수정: "o2 content"
$ git commit -am "o2 work 2"

10.2 병합 시도 및 충돌 발생

$ git checkout master
$ git merge 
  • 병합 중 충돌이 발생합니다.

10.3 충돌 상태 확인

$ git status
  • 충돌된 파일이 표시됩니다.

10.4 충돌 해결

$ nano work.txt
  • 파일을 열어 충돌 부분을 수정합니다.

예시 충돌 부분:

<<<<<<< HEAD
master content
=======
o2 content
>>>>>>> o2
  • 수정 후:
# title
master and o2 content
# title
content

10.5 수정 사항 반영

git add work.txt
$ git commit -m "Conflict resolved"
  • 충돌이 해결되었음을 커밋합니다.

11. 실습 예제 및 연습 문제

11.1 연습 문제 1: 파일 변경 및 커밋

  • hello1.txt 파일을 수정하여 두 번째 줄에 2를 추가하고 커밋 메시지를 "Message 2"로 작성하세요.
$ nano hello1.txt
# 내용 추가: 2
$ git add hello1.txt
$ git commit -m "Message 2"

11.2 연습 문제 2: 복수 파일의 변경 사항 확인

  • 여러 파일의 변경 사항을 한 번에 커밋한 경우, 각 파일의 변경 내용을 확인하려면 다음 명령어를 사용합니다.
git show [커밋 ID] -- [파일명]

예시:

$ git show abcdef -- hello1.tx

11.3 연습 문제 3: 브랜치 생성 및 작업

  • google 브랜치에서 작업:
$ git checkout -b google
$ nano work.txt
# 마지막 줄에 "google work 4" 추가
$ nano google.txt
# 내용 입력: "google work 4"
$ git add .
$ git commit -m "google work 4"

  • ms 브랜치에서 작업:
$ git checkout -b ms
$ nano work.txt
# 마지막 줄에 "ms work 4" 추가
$ nano ms.txt
# 내용 입력: "ms work 4"
$ git add .
$ git commit -m "ms work 4"

  • 브랜치 로그 확인:
$ git log --all --graph --oneline


12. 팁과 주의사항

12.1 빠른 커밋

  • 모든 파일 추가 후 커밋:
$ git add .
$ git commit -m "메시지"

  • 추적 중인 파일의 변경 사항을 한 번에 커밋:
$ git commit -am "메시지"

  • 이 명령은 이미 Git이 추적하고 있는 파일의 변경 사항을 추가하고 커밋합니다.

12.2 기본 에디터 설정

  • Git의 기본 에디터를 Nano로 설정하려면:
$ git config --global core.editor "nano"

12.3 버전 삭제의 다양한 모드

  • git reset 명령어에는 여러 옵션이 있습니다:
    • -soft: 커밋만 취소하고 Staging Area는 유지.
    • -mixed: 커밋과 Staging Area를 취소하고 변경 내용은 워킹 디렉토리에 유지.
    • -hard: 커밋, Staging Area, 워킹 디렉토리의 변경 내용을 모두 취소.

12.4 로그 시각화

  • 브랜치와 커밋의 관계를 그래프로 확인하려면:
$ git log --all --graph --oneline

'Development studies' 카테고리의 다른 글

백준 깃헙 자동 푸시 크롬 확장 프로그램  (0) 2023.04.12
인텔리제이 단축키  (0) 2023.03.07
[안드로이드]GitHub 세팅하기  (0) 2023.02.09
정렬된 배열이 더 빠른 탐색을 한다.  (0) 2022.10.12
  1.  
  2. 1. 버전 관리의 필요성
  3. 2. Git 소개와 역사
  4. 3. Git의 3대 목적
  5. 4. Git 설치 및 시작하기
  6. Git 설치
  7. Git 실행
  8. 5. Git의 기본 흐름
  9. 6. 버전 생성과 관리
  10. 6.1 저장소 초기화
  11. 6.2 파일 생성 및 확인
  12. 6.3 상태 확인
  13. 6.4 파일 추적 시작 (Staging Area에 추가)
  14. 6.5 커밋 (버전 생성)
  15. 6.6 사용자 정보 설정 (최초 1회)
  16. 6.7 커밋 로그 확인
  17. 7. 파일 변경과 비교
  18. 7.1 파일 수정
  19. 7.2 변경 사항 확인
  20. 7.3 변경 사항 버리기
  21. 7.4 특정 커밋으로 돌아가기
  22. 8. 버전 되돌리기
  23. 8.1 커밋 추가
  24. 8.2 이전 커밋으로 되돌리기 (revert)
  25. 9. 브랜치 관리
  26. 9.1 브랜치 생성 및 확인
  27. 9.2 브랜치 이동
  28. 9.3 브랜치에서 작업
  29. 9.4 브랜치 병합
  30. 10. 브랜치 병합과 충돌 해결
  31. 10.1 충돌 상황 만들기
  32. 10.2 병합 시도 및 충돌 발생
  33. 10.3 충돌 상태 확인
  34. 10.4 충돌 해결
  35. 10.5 수정 사항 반영
  36. 11. 실습 예제 및 연습 문제
  37. 11.1 연습 문제 1: 파일 변경 및 커밋
  38. 11.2 연습 문제 2: 복수 파일의 변경 사항 확인
  39. 11.3 연습 문제 3: 브랜치 생성 및 작업
  40. 12. 팁과 주의사항
  41. 12.1 빠른 커밋
  42. 12.2 기본 에디터 설정
  43. 12.3 버전 삭제의 다양한 모드
  44. 12.4 로그 시각화
'Development studies' 카테고리의 다른 글
  • 백준 깃헙 자동 푸시 크롬 확장 프로그램
  • 인텔리제이 단축키
  • [안드로이드]GitHub 세팅하기
  • 정렬된 배열이 더 빠른 탐색을 한다.
comoZ
comoZ
인공지능 개발자 지망생입니다!
comoZ
comoZ/이호준 - 일지
comoZ
전체
오늘
어제
  • 분류 전체보기 (76)
    • 일지 (14)
    • Algorithm (5)
      • 자료구조와 알고리즘 (2)
      • 백준 (2)
      • 이것이 코딩테스트다 with 파이썬 (1)
    • Development studies (5)
      • java (2)
      • spring (9)
      • python (1)
      • 군장병 sw개발 (6)
      • kaggle (2)
    • ai (4)
      • 혼자 공부하는 머신러닝+딥러닝 (1)
    • 수학 (0)
      • 선형대수학 (0)
      • 집합론 (0)
    • CS (0)
      • computer architecture (0)
    • Toy Projects (2)
    • 자격증 (4)
    • Reviews (18)
    • Others (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 2024 공지!
  • 으아
  • 대체불가 인공지능 개발자를 목표로 하는 이호준입니다.

인기 글

태그

  • 코딩테스트
  • 초급1
  • qu
  • stackoverflow
  • final
  • kakaoenterprise
  • 군 장병 맞춤
  • sw개발
  • Tkinter
  • sw역량강화
  • 스택
  • dfs
  • ai역량강화
  • 다운캐스팅
  • 그래프 탐색
  • reinforcement learning
  • 미로 찾기 강화학습
  • queue
  • 삼항연산자
  • BFS
  • Stack
  • 코드트리조별과제
  • 코드트리
  • 큐
  • Pyinstaller
  • Q learning
  • Groom
  • downcasting
  • openpyxl

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
comoZ
git 초간단 튜토리얼
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.