내배캠/수준별 강의, 특강

[내일배움캠프/백엔드] 특강. Git 기초

jy3574 2024. 10. 22. 20:52

<목차>

1. 필수 리눅스 명령어

2. Git & Github의 개념

3. Git 필수 명령어

4. Github으로 코드 백업하기

5. Github 협업 기초와 충돌 해결법(conflict)


필수 리눅스 명령어

-git은 아니지만 기본 리눅스 명령어를 알아야 수월함.

*pwd(print working directory)

-현재 터미널에서 내 위치를 확인하는 명령어

-현재 내가 작업하는 폴더(Users/developsoo)를 보여달라는 뜻

-참고 : ~은 Home(홈)이라는 경로이며, 우리가 보는 데스크탑 보다 더 상위의 폴더를 말함

 

*ls(list)

-내 폴더 안에 있는 폴더 & 파일 내역을 보여줌

 

*ls -a (list all)

-숨겨진 파일 (보통 . 으로 시작함)도 모두 볼 수 있음

--숨겨진 파일이 왜 있을까??

----일반 사용자들이 볼 필요 없는 것들을 숨겨둔다, 개발자들이 보는 파일?

 

*cd 폴더명 (change directory)

-ls 명령어에서 확인된 폴더로 이동 가능

 

-Desktop 안에 있는 다른 폴더로 이동 가능

 

--마치 데스크탑의 폴더를 더블 클릭해서 들어간 것과 같은 효과

 

-cd.. : 한 단계 위의 폴더라는 뜻

 

-폴더명/폴더명 : 한 번에 더 깊이 들어갈 수 있음

 

*mkdir (make directory)

-현재 경로에서 폴더를 생성하는 명령어

 

*touch 파일명

-현재 경로에서 파일을 생성하는 명령어

-파일의 생성과 파일의 날짜, 시간을 변경하는 명령어

 

 

Git & Github의 개념

*Git : 코드 변경점 기록(버전 관리 도구)

-코드 변경점 기록

-버전 관리 도구, 형상 관리 도구

-소프트웨어의 변경사항을 체계적으로 추적하고 통제하는 것

 

-예를 들어 레포트를 작성할 때, 레포트를 만들고 나서 수정해야할 경우가 생기면 불안해서 복사본 파일을 만드는 경우가 있음

--이렇게 되면 파일이 많아져서 지저분해질 뿐만 아니라 각 파일에서 어떤걸 변경했는지에 대한 기록이 없음

---이런 문제점인 파일이나 폴더를 복사하지 않고, 변경기록도 할 수 있도록 해주는 것이 Git 이라고 보면 됨.

 

1. 하나의 폴더 내에서 코드의 변경점을 기록하기 위해 사용

2. 에러 발생 시 과거의 코드 기록으로 쉽게 되돌아가기 가능

--주의할 점 : 협업 시 코드를 돌리게 되면 코드가 꼬일 수도 있음! 주의해서 사용

 

*Github : 온라인 백업, 공유, 협업 (온라인 코드 저장소)

-백업과 공유가 가능한 온라인 코드 저장소

-Github으로 백업 가능

-Github으로 공유 가능

-Github으로 협업 가능

 

-예를 들어 과제를 하다가 저장이 안되서 과제물이 날아간 경우 -> 처음부터 다시 만들어야함

--보통 이런 상황 방지를 위해 온라인 백업(클라우드 사용)을 함 -> 온라인 업로드 -> 팀원들에게 공유도 쉬워짐

 

 

 Git 필수 명령어

 

<필수 명령어 리스트>

1. git init

2. git add

3. git commit

4. git status

5. git log

6. git push

7. git clone

8. git pull


*git init

-코드 관리를 시작하는 명령어

 

-initialize : 초기화하다, 초기 세팅하다 -> 이 단어의 준말

-프로젝트 시작 전 딱 한 번만 입력하면 됨

---여러 번 입력해도 문제되진 않음

 

-정확한 프로젝트 폴더(경로)에서 입력해야함

---잘못하면 데스크탑 전체 파일, 폴더가 기록됨

 

-저장하고 터미널 열어야 함

-다른 폴더에서 명령어 입력하면 안됨, pwd로 현재 경로 확인 후 경로가 다르면 cd 명령어로 이동 후 git init 명령어 실행

 

1. 터미널을 실행하고 나서 pwd로 경로를 확인한 후 정확한 폴더인지 확인

2. git init 을 입력 후 "initialized empty Git repository in ~~" 이 나오면 성공

3. 이렇게 git init이 적용되고 나면 숨겨진 폴더 .git이 생성되고, 이 폴더에서 코드 변경점을 계속 추적하고 기록함

-.git 폴더는 ls -a 명령어로 확인 가능

 

*git add & gid commit

-코드를 저장하는 명령어

-git add 파일명 -> 저장하기 전 저장할 파일 지정(나 여기 저장할거야~)

-git commit -m "메시지 작성" -> 실제로 저장하는 명령어

---메시지 부분은 내가 무슨 코드를 짰는지 자세하게 적는 것이 좋음

 

-지정할 파일이 많아지면...? 일일히 지정하기 귀찮고 번거로움

--이럴때 내 프로젝트의 변경사항을 한 번에 지정하는 방법

----1. git add . -> 점(.)은 나의 경로의 모든 변경된 사항을 말함

----2. git commit -m "메시지 작성"

----3. git status ->로 확인

------더 이상 저장할 것이 없다면 nothing to commit 이라고 뜸

 

<please tell me who you are>-이런 에러 발생하면 계정설정을 하지 않았기 때문

해결방법 = 아래 두개 입력

-git config --global user.name 유저네임

-git config --global user.email 유저이메일

 

*git status

-저장 여부 확인하는 명령어

-코드의 변경은 있지만 저장을 하지 않은 파일 = 붉은색으로 표시

-어떤 파일이 변경됐는지, 어떤 파일이 add(지정)됐는지 등 변경상태를 확인하는 명령어

 

*git log

-저장 내역을 확인하는 명령어

-커밋 메시지로 코드 변경점 추측 가능

-git diff : 코드 변경 확인

-git reset : 과거로 돌아가기 가능

-q : 빠져나오고 싶을 때

 

Github으로 코드 백업하기

-Github 사용 이유? = 백업, 공유, 협업

 

<github 사용법>

1. 온라인 저장소 (github repository) 만들기

-new -> repository 이름 입력 -> create repository 클릭

 

2. 내 코드를 github repository로 업로드하기

 

3. 추가로 수정된 코드 github에 반영하기 : git push

-코드 수정

-코드 저장 명령어 실행 -> git add . / git commit -m "메시지"

-git push origin 브랜치명

 

 

Github 협업 기초와 충돌 해결법(conflict)

 

*Github 협업

1. 초기 프로젝트 코드 작성

2. github 레포지토리 생성 (팀장이 생성)

3. 코드 github에 올리기 (git push)

 

4. 협력자(collaborator) 등록하기

-github 레포지토리 -> settings -> collaborators -> add people 

-팀원들의 username 또는 email 로 추가 -> 초대 수락해야함

 

5. 코드 복사해오기 (git clone)

-github 레포지토리에서 github 주소를 복사

-코드를 작성할 폴더를 만들어 줌

-vs code에서 해당 폴더를 열어줌

-get clone <github 주소> . 명령어 입력

---맨 뒤에 . 빼먹지 말기

-프로젝트 파일이 들어와짐

 

6. 다른 사람이 변경한 코드 내 코드에도 가져오기(git pull)

-다른 사람이 이미 git push하고 내가 git push 하려고 하면 에러 발생

-git push 전에 git pull 먼저해야함

 

<팀원이 코드 변경하고 github에 올릴때>

1. 코드 수정

2. 코드 저장 명령어 실행(add, commit)

3. git push origin 브랜치명

 

*git pull

-코드 수정 후 git push origin 브랜치명

-git pull 을 먼저 하라는 에러 발생 시 git pull origin 브랜치명

 

*충돌(conflict) 해결하기

-충돌이 발생하는 이유는 같은 파일의 같은 위치에 코드가 변경되었기 때문

 

1. <<<<head 삭제

2. =====삭제

3. >>>>4182...삭제

4. 원하는 코드로 수정

5. 코드 저장 명령어 실행(add, commit)

6. git push origin 브랜치명


*Working directory(작업공간)

-사용자의 작업 공간으로써, 로컬 저장소에 접근할 수 있으며 실제 파일을 수정하거나 생성하는 공간

-현재 작업 중인 소스코드들을 담고 있음

-운영체제도 워킹 디렉토리 내부의 파일들만 접근하거나 수정할 수 있음

-작업 폴더에서 .git 디렉토리를 제외한 나머지 부분

-워킹트리, 워킹디렉토리, 작업디렉토리 등으로 불림

-워킹 디렉토리에서는 파일을 추적(tracked)/ 비추적(untracted) 상태로 구분

 

<tracked>

-tracked 상태의 파일들은 git에 의해서 파일의 변경 이력이 추적된다.

-모든 파일들의 변경 이력을 추적할 경우에는 시스템의 부하가 커지므로 git에서는 요청받은 파일들만 변경 이력을 추적한다.

-$git add <file_name>

-위 명령어를 사용하면 이름이 file_name인 파일을 tracked 상태로 등록

 

<untracked>

-저장소 내에서 새로 만들어진 모든 파일들은 untracked 상태로 시작한다.

-untracked 상태인 저장소 내의 파일들은 git이 코드 변경 이력을 추적하지 않는다.

 

*Staging area

-커밋을 하기 위해 $ git add 명령어로 추가한 파일들이 모여있는 공간

-여기에 추가한 파일들을 commit을 해야 최종적으로 저장소에 들어감

 

*Repository(실제로 저장하는 공간)

-git은 작성한 소스코드 파일의 모든 변경 사항을 관리하며, 파일들의 변경 내역을 저장소(repository)에 저장을 한다.

 

<깃 저장소>

-깃 저장소는 폴더와 외형적으로 비슷함

-깃 저장소의 내부구조

---깃 저장소에는 숨겨진 폴더 .git이 존재, 해당 폴더에서 버전 관리 시스템 vcs에 필요한 파일 변경 이력을 기록

---프로젝트의 모든 변경 이력과 history를 가진 일종의 데이터 베이스와 동일

---.git 디렉토리가 로컬 저장소에 해당한다.