computer science knowledge

[git / github] 팀 개발을 위한 Git, GitHub 입문 - 버전 관리와 CLI

xudegloss 2023. 2. 20. 00:46

1. 버전 관리

- 수정 사항들을 커밋 (하나의 버전) 으로 정리해서 관리하는 것이다. 커밋을 여러 개로 쪼개면 쪼갤수록 관리하기 편리할 것이다.
- 코드는 한번에 완성되는 경우가 없다. 많은 수정 사항들이 생기고, 추가하기도 하고, 리팩토링 과정을 거친다.
- 버전 관리가 중요한 이유 : 내용 정리에 용이하고, 원본을 훼손하지 않고 계속 코드를 안정적으로 저장 가능하다.

- 수정 사항 수정 + 원본 보존에 탁월하다.
- 협업 시에 유용하다.
- 만약에 코드가 망가진 경우, 바로 전 단계의 버전으로 돌아가면 온전한 코드를 다시 가져올 수 있다. (원본 보존에 용이)

2. git과 github

1. git : 버전 관리, 저장 공간이 필요하다. 일반적으로 우리가 알고 있는 검은 화면을 이용하기도 하고, 시각적으로 버튼을 이용하기도 한다.
- CLI : 명령어 이용
- GUI : 버튼 이용 (나는 sourcetree를 사용하는 편이다.)
2. github : 저장 공간을 의미한다.

3. 환경 설정하기

1. git과 git bash 설치하기.
2. vscode 설치하기.
3. github 가입하기.

4. git과 github + CLI

1. git 초기화와 로컬 저장소 만들기

- 로컬 저장소 : 나만 볼 수 있는 저장소를 의미한다. 내 컴퓨터 안에 있는 저장소이다.
- 원격 저장소 : github에 있는 저장소를 의미한다. 같이 협업하는 사람들이 모두 같이 볼 수 있다.

(주의) 1개의 폴더에 하나의 로컬 저장소만 생성 가능하다. 여러 개를 만들어 버리면 충돌이 발생할 수 있다.
이런 경우를 막기 위하여 1개의 폴더에 1개의 프로젝트를 생성하여 관리를 해줘야 한다.

- git을 초기화한다.

git init

 

- 1개의 로컬 저장소를 생성한다.

ls // 폴더에 있는 모든 파일을 확인할 수 있다.
ls -al // 폴더에 있는 보이지 않는 파일들도 모두 확인할 수 있다.

 

- 작업 장소로 내려가고 싶은 경우에는 cd 명령어를 이용한다.

cd C:
cd Users
cd ajouu
cd Documents
cd coding-test

// 이런 방식으로 한 단계씩 내려가기.
// cd : 작업 공간의 위치를 설정하기.

 

만약에 master로 되어있는 경우에는 main으로 브랜치를 변경해야 한다.

 git checkout -b main
 // git checkout main 해보고 위의 명령어 실행하기

main 브랜치를 만든 후에 main으로 이동하는 작업을 한꺼번에 실행할 수 있게 해준다.

2. 첫 번째 버전 만들기

- 전역 사용자 설정하기.

git config --global user.name "xudegloss" // 닉네임
git config --global user.email ajouunihospitalrn@naver.com // 이메일 주소

닉네임과 이메일을 입력하기. 사용자 정보를 설정해준 뒤에 vscode에서 열심히 코딩을 한다.

 

- 원하는 파일 선택하기.

git add 원하는 파일
// git add .이라고 하면, 모든 파일을 선택

 

- 메세지를 달아 커밋으로 만들기.
커밋은 하나의 버전이라고 생각하면 편하고, 의미있는 변동사항을 커밋에 적어줘야 한다.

git commit -m "원하는 메세지 입력"

 

- 생성한 커밋 보기.
지금까지 생성한 커밋을 볼 수 있다. 즉, 버전 관리가 어떻게 되고 있는지를 확인할 수 있다.

git log

3. 만든 버전을 github에 올리기

git remote add origin 원격 저장소 주소
git push origin main
// 구글링을 해보니 master 보다는 main 브랜치에 올리는 것이 좋다고 한다.

 

만약에 아래와 같은 에러가 뜨는 경우에는 강제적으로 push 할 수 있다.

To https://https://github.com/xudegloss/for-office-worker.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/xudegloss/for-office-worker.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
// 강제적으로 git push 진행하기
git push origin main --force

 

4. 다른 사람이 만든 저장소 받아오기

git clone 원격 저장소 위치 . 
// 이런 경우는 맨 처음 과정에서만 사용하기.
git pull origin main
// 상대방이 올린 코드를 가져올 때 이용하기.

(주의) 반드시 .을 찍어줘야 한다. 아니면 새로운 폴더에 저장되기 때문이다! 이 과정은 맨 처음 과정에서만 사용하면 된다.
- git clone : 다른 이의 코드를 모두 가져오는 경우 유용하다. 처음 한 번만 해주면 된다.
- git pull origin main : 수정된 몇 개의 코드를 가져오는 경우 유용하다.

5. 위의 과정을 정리하기

1. A,B가 협업의 짝꿍으로 정해진다.
2. A가 로컬 저장소를 생성하고, 코드를 작성한 뒤 add, commit 그리고 push를 이용해서 원격 저장소에 올린다.
3. B가 새로운 코드를 작성하기 위해 clone을 이용해서 A가 올린 코드를 모두 복제한다. 그리고 collaborator에 B를 추가한다.
4. B도 마찬가지로 add, commit, 그리고 push를 이용해서 코드를 원격 저장소에 올린다.
5. A는 변경된 사항을 고려하면서 코드를 작성하기 위해서 pull을 이용해서 원격 저장소에서 변경된 코드를 모두 가져온다. 그리고 다시 코드를 작성한다.
6. 과정을 반복한다.