✍🏻 30일 공부 이야기.
📌 오늘의 목표
Git에 대해 알아보고 설치해보자.
Local Repository에 있는 파일을 Remote Repository에 올려보자. (-> 혼자 혹은 소수의 인원이 프로젝트를 할 때 많이 이용되는 방식)
Remote Repostiory에 있는 파일을 Local Reposiotyr에 반영해보자. (-> 회사에서 내가 작업하게 될 방식)
여러 작업을 할 수 있게 해주는 Branch에 대해 알아보자
버전 관리 시스템의 한 종류.
Git을 다운로드 해준다.
cmd창을 열어 git --version
을 실행한다.
: version 정보가 잘 뜬다면 설치가 잘 된 것이다 :)
Github 사이트에 들어가서 회원 가입을 해준다.
설정 1.
username과 email을 등록함으로써 매번 push할 때 안 적어줘도 되는 장점이 있다.
git config --global user.name 유저이름
git config --global user.email 유저이메일
설정2.
파일 이름 내에 줄바꿈 문자가 포함된 경우 CRLF 차이로 인해 commit이 발생할 수 있다.
따라서 윈도우에서는 LF를 가져올 때는 CRLF로 변경하고 보낼 때는 CRLF를 LF로 변경해주는 것이 필요하다.
git config --global core.autocrlf true
설정3.
editor를 설정할 수 있다.
git config --global core.editor 에디터이름
전체 설정 확인 : git config --list
항목별 설정 확인 : git config 항목
Repository
: 소스코드가 저장되어 있는 여러 개의 Branch가 모여있는 디스크 상의 물리적 공간.(보통 프로젝트 별로 분리해둔다)Checkout
: 특정 시점이나 Branch의 소스코드로 이동. Checkout을 통해 과거 여러 시점의 코드로 이동이 가능.
Stage
: 작업할 내용이 올라가는 임시저장영역.
Commit
: 작업할 내용을 Local Repository에 저장하는 과정. commit의 메세지를 변경에 대한 설명을 작성해줘야 좋음.
Tag
: 임의의 commit 위치에 쉽게 찾아갈 수 있도록 붙여놓은 이정표.
Push
: Local Repository의 내용 중, Remote Repository 에 반영되지 않은 commit을 Remote Repository로 보내는 과정.(Push하는 순간 다른 개발자들에게도 영향을 주게 되므로 정상적인 코드만 Push하도록 하자.)
Pull
: Remote Repository에 있는 내용 중, Local Repository에 반영되지 않은 내용을 가져와서 Local Repository에 저장하는 과정. (다른 팀원이 변경하고 Push한 내용을 Local Repository에 가져올 수 있다.)
Branch
: 특정 commit 단위의 시점에서 분기하여 새로운 commit을 쌓을 수 있는 가지를 만드는 것. 모든 branch는 최종적으로 다시 main(master) branch에 merge할 수 있음.
Merge
: 하나의 Branch를 다른 Branch와 합치는 과정.
Local Repository는 Git이 관리하는 3가지 단계로 구성되어 있다.
1. Working Directory : 실제 소스파일과 생성한 파일들이 들어가있는 폴더
2. Index : Working Directory 파일 중 add
를 하면 commit하기 전의 준비 영역에 도달
3. Head : Index 파일 중 commit
을 하게 되면 최종 확정본이 올라가게 됨
cmd창에서 작업하면 된다.
mkdir 폴더이름
Working Directory 단계
Working Directory 생성
cd 폴더이름
mkdir working directory 이름
Git에서 해당 폴더를 관리하기 시작하게 함 : git init
※ .git
폴더가 생성된 것을 확인하면 그 폴더는 Local Repository의 Working Directory가 된 것임.
ls -all
cd .git
ls
는 리눅스와 맥 언어이기 때문에 윈도우에서 사용하면 위와 같은 에러가 뜰 것이다. 윈도우에서는 같은 언어인 dir
을 사용하거나, doskey ls = dir
을 사용해 ls
를 사용할 수 있다.
(근데 .git파일이 생긴건 폴더에서 보이는데.. cmd창에서 이름은 왜 안 나타나지이..?ㅎㅎ)
예시 파일을 Working Directory에 생성해보자
touch 파일명 <-- 빈 파일 생성 명령어 -->
ls <-- 파일 생성 확인 가능 -->
touch
또한 윈도우에서는 사용이 안된다. 따라서 나는 fsutil file createnew 파일명 파일크기
명령어를 이용해 파일을 생성해주었다.
현재 Git의 상태 확인 : git status
습관화되면 좋은 명령어이다
Index 단계
Working Directory의 파일을 Index에 추가 : git add 파일명
Head 단계
git commit -m "commit 메세지 내용" 파일명
error: pathspec 'commit'' did not match any file(s) known to git
와 같은 에러가 떴었다. ""으로 해주니 문제 없이 깔끔하게 해결~!! (이 사이트 참고했어용)
이제 Remote Repository를 만들고 Local Repository의 Head에 반영된 내용을 Remote Repository에도 반영해보자.
그러기위해선 Remote Repository를 먼저 만들어주저야 한다.
Github 홈페이지에서 생성할 수 있다.
Github 홈페이지에서 Repository - New 를 클릭하면 생성할 수 있는데, Local Repository와 같은 이름을 주는 것이 편하고 나머지 옵션 설정은 개인에 맞게 해주면 된다.
나중에 깃허브 링크가 쓰이니 https로 선택한 후 오른쪽에 뜨는 링크를 복사해두자 :)
Remote Repository에 접속하기 위해 비밀번호 대신 Token을 사용하고 있으므로 Token을 생성해주어야 한다.
1. 오른쪽 상단 프로필 클릭 - setting 클릭 | 2. 왼쪽 맨 하단 Developer settings 클릭 | 3. Personal access tokens - Generate new token 클릭 |
---|
자신에게 맞는 설정을 한 뒤
파란색으로 가린 부분이 Token이다. 이는 다시 볼 수 없으니 잘 메모해두기!!!
이제 Local Repository와 Remote Repository를 연동해보자.
복사해뒀던 https 링크와 위에서 얻은 token이 필요하다. 그리고 아래 코드를 실행시켜주면 된다.
git remote add origin 링크
만약, 코드를 실행할 때마다 username과 token을 입력하기 싫다면 아래 코드를 실행시켜주면 된다.
git remote add origin https://유저이름:토큰@github.com링크나머지
나는 유저 이름이 castlemi99이고
링크가 https://github.com/castlemi99/test_project.git 였으니 아래처럼 실행해주었다.
이제, Local Repository(Head)에 반영된 내용을 Remote Repository에도 반영해보자.
git push orgin 브랜치이름
나중에 현재 브랜치 이름을 확인하는 명령어도 배울 것이다. 기본 브랜치 이름은 master
또는 main
!
만약 위 코드를 쳤는데
fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.
와 같은 에러가 뜬다면 orgin 부분이 다른 것인데 아래와 같이 확인할 수 있다.
git remote -v
를 실행시키면
위와 같은 fetch, push 내용이 뜰텐데 앞에 빨간색 부분의 이름을 쳐주면 된다.
Remote Repository의 내용에 맞춰 Local Repository를 갱신할 수 도 있다고 했다.
git pull orgin 브랜치이름
예시를 위해 Remote Repository에 README.md 파일을 생성하고 이를 pull 해보자.
왼쪽 사진에서 Add a README 를 클릭하면 쉽게 만들 수 있다. 오른쪽 사진에서 본 것처럼 Remote Repository와 Local Repository가 다른 것을 확인할 수 있다.
다른 상태에서 pull
해주면 Local Repostiory도 업데이트된다.
혼자 혹은 소수의 인원끼리 프로젝트를 시작할 때는 위의 방법이 쓰일 것이다. 그런데 이미 코드가 많이 작성되어 있는 상황에 내가 투입된다면? 또는 다른 개발자의 깃허브를 학습하기 위한 용도라면? 아래와 같은 방법을 이용해야할 것이다.
앞서 Github에서 생성했던 방법과 같이 생성하되
비어있으면 안되므로 위와 같이 설정해주었다.
이런 상태!
Default Branch
이때 왼쪽 상단을 보면 main
이라고 되어있을 것이다. 이것은 Local(Git)에서 시작하냐, Remote(Github)에서 시작하냐의 차이인데 앞서 Local에서 시작했던 예시들은 master
이고 Remote에서 시작하는 이번 예시는 main
임을 기억해주면 될 것 같다.
Default Branch 이름을 변경할 수도 있지만 이미 많은 팀원들이 사용하고 있다면 비추!
이제 회사에 갔을 때 내가 제일 먼저 하게 될 작업일 Remote Repository를 복제해보자.
Local Repository를 생성하지 않은 상태에서 Git Clone 명령을 사용하면 된다. (원래는 폴더를 만들고 해당 폴더를 초기화(init)하고 add, pull해주어야 하지만, Git Clone 명령어 하나가 모든 작업을 다 해준다)
git clone https://유저이름:토큰@github.com링크나머지
앞서 만든 HelloGit이 회사의 Remote Repository라 생각하고 복제해보자.
복제할 링크를 복사해두고 clone을 해주면
잘 복제된다.
Local Branch에 있는 브랜치를 조회하는 명령어는 git branch
이다. 이때 현재 브랜치는 앞에 * 표시가 있다.
Remote와 Local은 다르기 때문에 명령어가 다른데 Remote Branch는 git branch -r
명령어를 통해 확인할 수 있다.
Local과 Remote Branch를 동시에 조회할 수도 있다.
git branch -a
git branch 브랜치 이름
git checkout 브랜치 이름
git checkout -b 브랜치이름
git branch -d 브랜치 이름
하지만 Local에서 생성한 Branch는 Remote에서는 보이지 않는다.
git push orgin 브랜치이름
git push orgin --delete 브랜치 이름