코드스테이츠
[코드스테이츠 BE 45기] <Section1> Week1 (Git 기초)
codingbug
2023. 4. 14. 21:58
Git 기초
Git
소스 코드 기록을 관리하고 추적할 수 있는 버전 관리 시스템
날짜별로 어떤 파일이 어떻게 바뀌었는지 확인이 가능
버전관리 : 파일의 변경 사항을 추적하며, 사용자가 각 파일의 버전을 관리할 수 있게 도와줌
백업 : 파일을 백업할 수 있게 해줌
협업 : 협업자들과 함께 파일을 공유하고, 각자의 작업물을 취합할 수 있게 해줌
- 스냅샷 : 특정 시점에 생성된 백업 복사본
- commit : 스냅샷을 만들어 주는 작업
- Github(원격 저장소의 기능, 개발자들의 SNS) : Git Repository를 관리할 수 있는 클라우드 기반 서비스-
- Git Repository(Git으로 관리되는 폴더)
- Local Repository 작업 Remote Repository 내가 작업한 코드를 업로드해 여러 사람이 함께 공유가능
Fork : React프로젝트에 contribute을 하기 위해서 React 원격 저장소를 내 원격 저장소로 가지고 오는 작업
Clone : Fork해서 Remote Repository에 옮겨온 코드를 수정하기 위해서는 내 컴퓨터로 가져오는 작업
Push : React 소스코드 변경 작업을 완료 후 변경된 내용을 commit을 통해 저장해 준 뒤 Remote Repository에 반대로 올려주는 작업
Pull : Remote Repository에서 변경 사항이 있을 때 Local Repository 로 가져오는 작업
- add, commit, push : 온라인 원격 저장소에 업로드하는 과정
- fork, clone : 협업자의 작업물을 나의 로컬에 다운로드 받는 과정
- pull request : 상대 협업자에게 나의 작업 완성물을 취합해달라고 요청하는 과정
- merge : 상대방의 작업물과 나의 작업물을 취합하는 과정
Git Workflow
상황에 따라 GitHub의 기능과 Git 명령어를 사용할 수 있다
- Fork
- clone
- status
- restore
- add
- commit
- reset
- log
- pull
- push
- init
- remote add
- remote -v
• Git의 세 가지 영역 및 상태를 이해한다. (Committed, modified, staged)
Advanced Challenge
- Git Repository의 commit 되지 않은 변경 사항을 취소할 수 있다.
- reset HEAD <file>
- checkout -- <file>
- 협업을 위한 git 개념을 이해할 수 있다.
- branch, merge의 개념
- remote repository에서 origin과 upstream의 차이점
- 온라인 : Remote repository(원격 저장소)
- 로컬 : Work space(작업 공간), Staging area(스테이징 영역), Local repository(지역 저장소)
2 Git으로 파일 관리를 시작하기(Git 초기화) : git initmkdir git_practice cd git_practice pwd /c/Users/codingbug/git_practice touch hello_git.txt echo hello codestates > hello_git.txt cat hello_git.txt hello codestates git.txt
.git 디렉토리~/git_practice git init Initialized empty Git repository in C:/Users/codingbug/git_practice/.git/ ~/git_practice **(master)**
- git init을 입력하면 디렉토리 내에 .git 디렉토리가 생성되지만, ls -l 명령어를 입력해도 .git 디렉토리를 확인할 수 없음
- 디렉토리나 파일 이름의 맨 앞에 .이 붙으면 해당 디렉토리 또는 파일이 숨김 처리되어 일반적인 ls명령어로는 확인할 수 없지만, ls명령어의 옵션으로 -a를 붙여주면 숨김 처리된 디렉토리 및 파일을 확인할 수 있음
Work space3 파일들의 상태를 확인하기 : git statusls -l total 1 -rw-r--r-- 1 codingbug 197121 0 4월 14 10:39 git.txt -rw-r--r-- 1 codingbug 197121 25 4월 14 10:40 hello ls -al total 13 drwxr-xr-x 1 codingbug 197121 0 4월 14 10:45 ./ drwxr-xr-x 1 codingbug 197121 0 4월 14 10:37 ../ drwxr-xr-x 1 codingbug 197121 0 4월 14 10:45 **.git/** -rw-r--r-- 1 codingbug 197121 0 4월 14 10:39 git.txt -rw-r--r-- 1 codingbug 197121 25 4월 14 10:40 hello
git status On branch master No commits yet Untracked files: (use "git add <file>..." to include in what will be committed) git.txt hello nothing added to commit but untracked files present (use "git add" to track)
- On branch main
- 현재 브랜치는 master 브랜치임
- No commits yet
- 아직 커밋을 하지 않았다는 의미
- Untracked files: ~
- Untracked는 Git의 관리하에 있는 파일이 가질 수 있는 상태 중 하나
- (use “git add <file>…” to include in what will be committed)
- git add 파일_이름을 입력하면 커밋될 것들에 해당 파일을 포함시킬 수 있다는 의미
- what will be committed : 커밋될 것들이 모여있는 무언가=Git의 영역 중 Staging area
- nothing added to commit but untracked files present (use "git add" to track)
- 아직 add된 파일들이 없으며 Untracked 상태의 파일이 존재하니, git add 명령어를 사용하라고 안내
- use git add to track : track 하기 위해서는 git add명령어를 사용해야 함
- Untracked
파일의 내용을 변경하여도 Git이 파일의 내용 변경을 감지하지 못함.
- : Git에 의해 파일의 상태가 추적되고 있지 않은 상태
- Tracked
- : 파일의 상태가 추적되고 있음. 수정되었을 때 Git이 파일의 변경 내용을 감지.
- Unmodified : 파일의 수정이 Git에 의해 감지되지 않은 상태
- Modified : 파일의 수정이 Git에 의해 감지된 상태
- Staged : 파일이 Staging area에 존재하는 상태
git status On branch master No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: git.txt new file: hello
- Changes to be committed: ~
- 변화가 감지되었으며, 아래의 파일들을 Commit 할 수 있음을 의미
- 즉, 현재 hello_git.txt는 Staging area에 존재하며, 따라서 Staged 상태임
- 변화가 감지되었으며, 아래의 파일들을 Commit 할 수 있음을 의미
- (use "git rm --cached <file>..." to unstage)
- 해당 명령어를 입력하면 새롭게 생성하여 스테이징한 파일을 다시 Work space로 되돌릴 수 있음
- new file: git.txt
- Git이 git.txt라는 새로운 파일을 감지하였음을 의미합니다.
- 주의할 점은, 아직 git.txt는 Untracked 상태라는 점임. Git이 새로운 파일을 감지하였기 때문에 Tracked 상태인 것으로 오해할 수 있지만, Tracked 상태는 Commit이라는 과정을 거쳐야만 가질 수 있는 상태임
git commit : 여러 줄의 커밋 메시지를 입력할 수 있는 텍스트 편집기 창이 뜸1 포크3 리모트git remote add origin<내ssh경로>git remote -vgit add <내가만든파일 hello_git.txt>git commit -m ‘feat hello_git.txt’6 푸시git push pair mastergit add <change flie>89파일을 Local repository에 저장함과 동시에 파일의 버전을 기록
- git pull pair master
- git push origin master
- git commit -m ‘change TOO’
- 7
- git push origin master
- *feat는 Commit Message Convention임 (컨벤션 참조)
- git commit -m ‘hello_git.txt추가’
- 5 staging area로 파일 추가하고 commit 하기
- 4 리모트 확인
- git remote add pair<페어ssh경로>
- 2 클론
- -m : 여러 줄의 커밋 메시지보다는 짧게 요약하여 한 줄만 작성
- Commit : Local repository에 파일을 저장하는 행위
- git add 파일_이름
- 4 Staging area로 파일을 이동시키기 : git add
- Local repository에 파일들을 저장하기 전에 임시로 파일들을 모아둘 영역
- Git으로 관리되고 있는 파일들의 상태는 git status명령어로 확인 가능
- git init을 입력한 직후 다른 어떠한 Git 명령어도 입력하지 않은 상태의 파일들이 존재하는 영역 (눈으로 볼 수 있는 디렉토리 자체를 의미)
- 해당 파일이 존재하는 위치에서 git init을 입력하면 git init을 입력한 위치의 모든 파일들이 Git의 관리를 받게됨
- [Linux - 기초]에서 배운 내용을 활용하여, git_practice라는 이름의 디렉토리를 만들고, 해당 디렉토리 내에 아래의 내용이 들어간 hello_git이라는 이름의 텍스트 파일(.txt)을 생성하기
- Git의 영역
하.. 노션에서 작성했더니 순서가 섞였다.. 수정해야겠네ㅠ..