💡 230303 FRI
📌 Contents - Git이란
1. Git을 사용하는 이유
2. Git의 특징
3. Git 설치와 초기 설정
4. Git 저장소 생성
📌 Contents - Git 시작하기
1. Git 파일 생성
2. Git 저장소 반영
3. Git 관리 상태 확인
📌 Contents - Git 가지 치기
1. Git Branch
2. fast forward
3. Merge
4. conflict 해결
📌 Contents - Git 원격 저장소
1. 원격 저장소 받아오기
2. 원격 저장소 동기화
3. Origin이란?
1. Git이란
1-1. Git을 사용하는 이유
- 효율적인 협업
- 쉬운 버전관리
1-2. Git의 특징
- 가지 치기와 병합 기능을 통해 협업할 수 있음
- 네트워크 없이 로컬에서 작업이 가능해서 가볍고 빠름
- 분산 작업이 가능함
- 16진수 문자열로 이루어진 commit id를 통해 데이터를 보장할 수 있음
- 커밋하기 전 준비 영역(Staging area) 단계가 있음
- 오픈 소스로서 누구에게나 공개되어 있음
1-3. Git 설치와 초기 설정
Git 설치
- https://git-scm.com/downloads 에서 Git 다운로드 받기
- Linux나 macOS : Terminal 실행 / Windows : 시작 메뉴 -> Git Bash 실행
- Git 설치 확인 : Git Bash에서 다음 명령어 입력하기
Git 초기 설정
1. 사용자 정보 설정
저장소에 코드를 반영할 때 등록될 사용자 정보 설정한다. 아래와 같이 이름, 이메일 정보를 입력해준다.
프로젝트마다 다른 사용자 정보를 지정하고 싶으면 저장소 생성 후 --global 옵션을 빼고 실행해주면 된다.
$ git config --global user.name "이름"
$ git config --global user.email 이메일
2. 설정 정보 확인
$ git config --list
1-4. Git 저장소 생성
1. Git을 사용할 프로젝트 폴더로 이동 후 아래의 명령어를 실행한다.
$ git init
2. ls -al 명령어를 통해 프로젝트 디렉토리에 .git 디렉토리가 생성된 것을 확인할 수 있다.
$ ls -al
2. Git 시작하기
2-1. Git 파일 생성
git add 명령어를 이용하여 작성한 javascript 파일을 준비 영역(staging area)으로 보내준다.
준비 영역으로 보낼 파일이 많다면 git add . 을 통해 현재 폴더 내의 모든 파일을 한꺼번에 지정해줄 수 있다.
add 해준 이후 git status 명령어로 staging area의 어떤 파일이 변경되었는지 등의 파일의 상태를 확인할 수 있다.
$ git add example.js
$ git add .
2-2. Git 저장소 반영
앞서 example.js 파일 작업을 staging 하였으므로 메시지를 남겨서 저장소에 저장한다.
git commit -m "원하는 메시지" 명령어를 이용해 .git 저장소 내에 staging 파일을 저장한다.
즉, 파일이 staging area에서 repository로 넘어가게 된다.
$ git commit -m "Initial commit"
혹시 앞서 적은 메세지에 오타가 있거나 누락된 파일이 있는 경우
git commit --amend 명령어를 통해 텍스트 편집기를 실행해서 원하는 부분 수정해서 저장이 가능하다.
저장소 반영 내역을 확인하려면 git log 명령어를 입력하면 된다.
입력시 commit id, commit한 사람, commit 날짜 등을 확인할 수 있다.
이와 같이 commit을 마치면 파일은 Unmodified 상태가 된다.
2-3. Git 관리 상태 확인
git status 명령어를 통해 staging file들의 상태를 확인할 수 있다.
$ git status
파일 상태의 라이프 사이클에서
1) Untracked : add로 staging되지 않은 파일들을 의미하며, 다음과 같이 빨간색으로 표시된다.
위 상태에서 git add article.js 명령어를 통해 article.js를 staging 상태로 바꿔줄 수 있다.
파일이 staging 상태인 경우 초록색으로 표시된다.
그리고 만약 add 명령을 취소하려면 git reset 파일명 명령어를 이용하면 된다.
2) Modified : commit된 파일 중 수정된 파일들을 의미한다.
위 코드를 통해 article.js 파일이 수정되었다는 것은 확인했는데,
어떤 부분이 변경되었는지 구체적으로 알고자 하면 git diff 명령어를 입력하면 된다.
또한 git log 명령어를 통해 .git repository에 존재하는 history를 확인할 수 있다.
즉, 저장소 반영 내역을 확인하기 위해 log 명령어를 사용한다.
대표적인 log 옵션은 다음과 같다.
$ git log -p -2
$ git log --stat
$ git log --pretty=oneline
$ git log --graph
$ git log -S function_name
- -p , --patch : 각 commit의 수정 결과를 보여주는 diff와 같은 역할 수행
- -n : 상위 n개의 commit 확인
- --stat : 어떤 파일이 commit에서 수정되고 변경되었는지, 파일 내 라인이 추가되거나 삭제되었는지 확인
- --pretty=oneline : 각 commit을 한 줄로 출력
- --graph : commit 간의 연결된 관계를 아스키 그래프로 출력
- -S : 코드에서 추가되거나 제거된 내용 중 특정 텍스트(function_name)가 포함되어 있는지 검사
3. Git 가지 치기
3-1. Git Branch
Git Branch는 독립적으로 작업을 진행하기 위한 개념으로서, 각각의 branch는 다른 branch의 영향을 받지 않는다.
Git Branch는 크게 2가지로 나뉜다.
1) 메인 Branch : 배포할 수 있는 수준의 안정적인 branch
2) 토픽 Branch : 기능 추가나 버그 수정과 같은 단위 작업을 위한 branch
Git Branch 관련 명령어는 다음과 같다.
1) git branch 브랜치명 : git branch 생성
2) git branch : 현재 브랜치명 확인
3) git checkout 브랜치명 : branch 전환
4) git checkout 16진수hash값 : git log 로 확인한 snapshot에 넘나들기
즉, snapshot의 hash값 이용하여 과거 파일 내용 확인 가능
$ git log --pretty=oneline
$ git checkout d97d30
3-2. fast-forward
fast-forward 병합 방법은 branch가 갈라지지 않고, 충돌 없이 새로운 내용 추가시 사용된다.
fast-forward 방법을 이용하면 Head에 master, 브랜치명 둘다 존재하게 된다.
$ git checkout master
$ git merge 브랜치명
3-3. Git Merge
fast-forward 방법이 적용될 수 없는 경우는 같은 파일에서 서로 다른 수정을 하여 branch가 갈라지는 경우다.
1) git log --graph --all : commit graph 확인 가능
2) git branch --merged : 병합된 branch 확인
3) git branch -d 브랜치명 : 사용을 마친 branch 삭제
3-4. Merge Conflict
Merge한 두 branch에서 같은 파일을 변경했을 때 충돌이 발생한다.
해결하기 위한 과정은 아래와 같다.
1) git status : 어느 파일에서 충돌이 발생했는지 확인한다.
2) 충돌 해결 코드 작성 : 충돌이 일어난 파일을 직접 수정해준다.
3) git add
4) git commit -m "원하는 메시지" : 수정한 파일을 커밋한다.
5) git checkout 현재 HEAD와 merge 하려는 브랜치
6) git merge 현재 HEAD
4. Git 원격 저장소
4-1. 원격 저장소 받아오기
원격저장소는 인터넷이나 네트워크에 있는 저장소로서, 그 예시로 Github과 같은 호스팅 서비스가 있다.
1) git clone 원격 저장소 주소 : 원격 저장소 url로 받아오기
2) git remote add origin 원격 저장소 주소 : 원격 저장소와 로컬 저장소 연결해주기
- origin은 기본설정된 원격 저장소의 단축이름이고, 원한다면 다른 이름으로 변경 가능하다.
- 원격 저장소 주소 예시 : https://gitlab.com/group/project => https:// + 웹 호스트 서비스 + 그룹명 + 프로젝트명
3) git remote : 연결된 원격 저장소 확인
$ git remote
origin
4) git remote show origin : 원격 저장소 살펴보기
5) git remote rename origin 변경할이름 : 원격 저장소 이름 변경
6) git remote rm 저장소이름 : 주소가 변경되었거나 필요 없어진 원격 저장소 삭제
4-2. 원격 저장소 동기화
1) git pull : 원격 저장소에서 데이터를 가져와서 로컬 데이터와 병합
즉, master와 origin/master가 하나의 체크포인트를 동시에 가리킨다.
2) git fetch : 원격 저장소에서 데이터를 가져오지만, 병합하지 않음
즉, 진행중인 작업을 마무리하고 병합해주어야 한다.
=> git log 명령어를 통해 변경된 파일을 확인한 후, merge 해주어야 한다.
$ git log origin/master
$ git merge origin/master
3) git push origin master : 로컬 저장소에서 작업한 내용을 원격 저장소에 전달
즉, "master의 작업 내용을 origin으로 push하겠다."
push하기 전에 다른 사람이 작업한 것을 먼저 merge 해주어야 한다.
4-3. Origin이란?
1) git remote -v : 지정한 저장소의 이름과 주소 함께 출력
$ git remote -v
origin https://gitlab.com/group/project (fetch)
origin https://gitlab.com/group/project (push)
'ACTIVITY > 엘리스 SW 4기' 카테고리의 다른 글
[엘리스 TIL / 1주 3일차] 웹사이트에 효과 넣기 & 모바일에 대응되는 웹사이트 (0) | 2023.03.01 |
---|