로컬 저장소 / 원격 저장소
내 컴퓨터의 로컬 저장소에서 이루어지는 버전관리를 GitHub에 올려서(push) 다른 사람들과 함께 버전관리를 하는 것이 원격 저장소이다.
Git 초기설정
Git 처음 설치 시 다음과 같이 설정해주어야 한다. (깃 설치 후 처음 한번만 하면 된다.)
git config --global user.name "깃허브이름"
git config --global user.emmail "깃헙이메일"
원격 저장소 생성
Github 오른쪽 상단 + 버튼을 통해 New repository 를 통해 새 저장소를 생성한다.
- New repository : 새 저장소 생성
- Import repository : 저장소 불러오기
- New gist : 코드 조각을 올리고 싶을 때 new gist 사용
- New organization : 공동작업을 하기 위한 팀(조직) 생성
- New project : 새 프로젝트 생성
- Repository name : 저장소 이름을 입력한다.
- Description : 해당 프로그램, 저장소에 대한 간단한 설명 작성
- Public/Private : 해당 저장소의 공개/비공개 여부를 선택한다. (기본값 Public, Private은 유료 서비스)
- README.md : 해당 저장소의 소스 코드가 무엇을 의미하는지, 저장소를 본 사람들이 어떠한 정보를 읽었으면/알았으면 하는 정보들을 작성해놓은 글이다. Open source라면 소스의 설치 방법, 지원 여부, 라이센스 등이 들어간다. README 파일은 잘 정리해서 작성해주는 것이 좋다.
- Add .gitignore : git ignore를 추가하면 우리가 git 에서 add 파일을 추가할 때 해당 파일은 무시된다. (업로드 시 제외할 파일/디렉토리를 명시하는 파일)
- License : 본 프로그램/자료의 라이센스 지정
로컬 저장소와 원격 저장소를 연결하는 방법은 2가지가 있다.
1. 로컬 저장소 생성 - 원격 저장소 연결 방법
로컬 저장소 생성
git init
저장소로 사용할 내컴퓨터의 폴더에서 git bash 를 실행한 뒤, git init
을 작성하면 git 을 초기화 하며, .git
이라는 숨김폴더로 된 로컬 저장소가 생성된다.
우리는 로컬 저장소에서 버전관리를 할 수있으며, 로컬 저장소에 내가 만든 버전 정보, 원격 저장소 주소 등이 저장된다.
🚨 주의! 한 폴더에 하나의 로컬 저장소만 유지해야 한다.
브랜치 이름 변경
git branch -M main
로컬 저장소를 생성할 경우 브랜치의 이름이 기본적으로 master
로 생성된다.
하지만 깃허브의 프로젝트 생성 시 기본 브랜치 이름이 예전에 master
에서 지금은 main
으로 변경되었기 때문에 브랜치의 이름을 변경해주는 것이 좋다.
*master로 push를 하면 커밋 결과가 제대로 적용되지 않고 main 브랜치와 compare 하는 창이 나온다.
git branch -M [되고싶은 branch name]
git branch -m [현재 branch name] [바꾸고싶은 branch name]
원격 저장소 주소 알려주기
git remote add origin 저장소주소
저장소의 주소는 Code 버튼을 누르면 저장소의 주소를 복사할 수 있는 버튼이 나온다.
git bash를 실행하여 만들었던 .git 폴더(로컬 저장소)로 이동한 뒤, 위의 명령어를 통해 Github에 만든 저장소 주소를 알려줄 수 있다.
혹시라도 다른 원격 저장소와 연결되어있는지 확인하는 방법
git remote -v 연결된 원격 저장소가 있는지 확인
아무것도 안뜬다면 연결된 원격저장소가 없다는 것이고,
이와 같이 뜬다면 연결된 원격저장소가 존재한다는 것이다. 이 경우 원격저장소를 삭제하면 된다.
git remote rm origin 이미 존재하는 원격 저장소 삭제
원격 저장소의 변동사항(업데이트) 받아오기
git pull origin main
원격 저장소의 파일과 로컬 저장소의 파일이 다르다면 어떻게 할까?
원격 저장소를 생성할 때 Readme.md 파일이 있거나 한다면 로컬 저장소와 서로 파일 연동되어 있지 않기 때문에 나중에 작업 후 push 하게 되면 오류가 나게 된다. 때문에 작업 전에 pull 을 받아주는 것이 좋다.
공동으로 작업할 때에도 마찬가지로 팀원이 원격 저장소에 새로운 버전의 파일을 push 해줬을 경우 같은 프로젝트의 파일을 동기화 해주기 위해서 pull 을 받아주는 것이 필요하다.
업데이트된 데이터는 pull 명령어를 통해 받아올 수 있다. (커밋 업데이트 및 동기화)
원격 저장소에 업로드하기
로컬 저장소에서 원격 저장소로 파일을 업로드 하는 과정은 add - commit - push 3가지로 이루어진다.
만약 원격 저장소와 로컬 저장소의 파일이 다르다면 push 하기 전에 꼭 pull 을 해야 한다.
팀 프로젝트를 진행한다면 동료가 작업해서 원격 저장소에 올린 작업물들을 받아와서 업데이트 해주어야 하기 때문이다.
1. add
커밋으로 만들기 원하는 파일을 스테이징 영역으로 올린다.
git add README.md // 원하는 파일만 선택
git add . // 폴더 내부의 전체 파일 추가
2. commit
스테이지의 모든 파일들을 하나의 덩어리로 묶어서 원격 저장소에 보낼 준비완료 상태로 만든다.
커밋한 후에는 파일들이 수정없음 상태로 돌아간다.
이 때 커밋과 함께 커밋메세지를 첨부하여 변경된 사항이나 코드에 대한 설명을 추가할 수 있다.
git commit -m "프로젝트 설명 파일 추가"
3. push
로컬 저장소의 커밋된 파일들을 push 해서 원격저장소로 업로드한다.
git push origin main
origin은 등록한 원격 저장소, main은 브랜치 이름이다.
원격 저장소 이름을 origin으로 등록한 것이고, 해당 저장소의 main 브랜치로 push 한다는 명령어이다.
2. 원격 저장소 받아오기 (Clone)
클론을 하면 원격 저장소의 코드를 내 컴퓨터에 받아올 수 있고, 로컬 저장소(.git)도 자동으로 생성된다.
또한 로컬 저장소에 원격 저장소의 주소를 알려줘야하는 과정이 생략가능해진다. 때문에 더 편리하다.
1. 내 컴퓨터에 원격저장소를 받아올 폴더를 만든다.
2. 원격저장소(GitHub)의 주소를 복사한다.
주소창에는 저장소주소.git
의 형태로 복사할 수 있게 되어있다.
- Open with GitHub Desktop : GitHub desktop 이라는 GUI 프로그램으로 연결
- Download ZIP : 코드 자체를 압축파일로 받을 수 있다. (*로컬 저장소가 생기지 않음)
- Clone 명령어를 통해 다운 : 로컬 저장소(.git)가 자동으로 생성. commit을 하면 자동으로 해당 repository로 들어감
- 장점: 처음에 git init 을 통해 폴더를 초기화하고 add remote를 통해 저장소의 주소를 알려줘야 하는 과정 생략가능
3. 원격 저장소의 파일을 받아올 폴더에서 git bash를 실행한 뒤, 명령어를 입력해준다.
git clone 저장소주소.git 새 폴더에 파일 저장
git clone 저장소주소.git . 현재 폴더에 파일 저장(복제)
뒤에 .
을 붙임에 따라서 달라진다.
.
을 붙이지 않을 경우 저장소의 이름으로 새 폴더를 만든 후 그 곳에 파일을 저장(복제)한다.
.
을 붙일 경우 새 폴더를 만들지 않고 현재 폴더에 파일을 저장(복제)한다.
진행중인 팀프로젝트 저장소의 파일을 받아올 때나, 저장소를 생성 후 내 컴퓨터에서 작업하고 싶을 때
clone 해와서 내 로컬 저장소에서 코드를 작성 후 원격 저장소로 업로드하는 과정은 동일하게 add - pull - commit - push 과정을 거치면 된다.
저장소의 파일 상태 확인 (추적)
git status
커밋을 하게 되면 초록색으로 표시된 파일들이 커밋된다. (빨간색은 커밋에 포함 X)
빨간색으로 된 파일들은 Untracked 상태로 add 해서 스테이징에 올려주어야 커밋할 수 있다.
.gitignore 관리
.vscode
, node_modules
같은 파일 및 폴더가 깃허브에 올라가지 않도록 해야한다.
(clone 해서 실행해보는 사람의 컴퓨터에서 충돌이 날 수 있다.)
Push 권한
원격 저장소의 파일을 클론을 통해서 받을 수는 있지만, 누구나 push 할 수 있는 것은 아니다.
만약 협업이나 공동작업으로 다른 사람의 Repository에 기여하고 있다면
Settings - Manage access 에 가서 해당 저장소의 주인이 권한을 부여해주어야 원격 저장소에 접근할 수 있다.
= 해당 Repository에 push 할 수 있는 권한
출처/참고
- 제로베이스 강의
- https://geundung.dev/46?category=741030
- https://kim6394.tistory.com/254
- https://kkangsg.tistory.com/m/83