TIL38. Git : Git 사용법 정리

ID짱재·2021년 10월 14일
0

Git

목록 보기
5/8
post-thumbnail

📌 이 포스팅에서는 git의 사용 방법에 대해 정리하였습니다.



🌈 Git 사용법 정리

🔥 What's git?

🔥 Setting for git

🔥 git 기본 명령어

🔥 git 협업 명령어



1. What's git?

🤔 git이란?

✔️ git은 VCS(Version Control System) 중 한 종류로, 코드뿐 아니라 모든 file의 버전 관리를 손쉽게 도와주는 시스템입니다. VCS가 존재하지 않았을 때는, 버전별로 파일 또는 디렉토리를 만들어 관리했었다고 합니다.


🤔 git을 왜 쓸까?

✔️ 수정할 때 마다 파일을 새로 만들면 관리가 힘들기 때문

✔️ 언제든 이전 버전의 코드로 돌아갈 수 있기 때문

✔️ 변경한 사유 또는 사람 등에 관한 이력을 통해 사고를 대처할 수 있기 때문

✔️ 하나의 프로젝트를 두고 여러명의 개발자들이 협업할 수 있기 때문에


🤔 git? github?

✔️ VCS는 이러한 버전관리를 개선하기 위한 여러 시스템들을 의미하는데 Private한 서버를 두고, 서버에 버전 히스토리를 저장해두고 여러사람이 접속하여 사용하는 방식인 "Centralized Version Control"이 사용되기 시작했습니다. 다만, 이 방법은 서버에 문제가 생기면 접속이 안되고, 오프라인인 상황에서는 접근할 수 있다는 단점이 존재했습니다.

✔️ 이를 개선하기 위해 "Distributed Version Control"이 주목 받게 됩니다. "git", "mercurial", "darcs" 등이 "Distributed Version Control" 방식의 VCS입니다. 이 방식은 서버에 히스토리를 남겨두는게 아니라, 개인이 각 각의 히스토리를 분산시켜 유지하는 있는 방식입니다. 이 방법을 이용하게되면, 오프라인에서도 서로 동일한 히스토리를 가지고 있기 때문에 서버에 문제가 생겨도 복원이 가능하고, 계속 일을 지속할 수 있습니다.

✔️ 이런 "Distributed Version Control" 방식의 VSC는 회사 내에서 Private한 서버를 두고 분산시켜 이용하는 경우도 있고, Cloud 개념을 도입한 "github" 또는 "Bitbucket" 등이 있습니다.



2. Setting for git

🤔 git 환경 설정

✔️ git을 설치하였다면, 아래 명령어로 버전을 확인할 수 있어요.

🔎 git --version

✔️ git 환경 설정 진입 방법

🔎 git config --global -e

✔️ VScode에서 git 환경 설정 진입하려면, 진입방법 설정 후 다시 진입

🔎 git config --global core.editor "code" ⇢ git config --global -e

🤔 git 사용자 설정

✔️ 사용자 이름 및 메일 설정

🔎 git config --global user.name "Jaewon"
🔎 git config --global user.email "jewon119@gmail.com"

✔️ 설정된 이름 및 메일 확인

🔎 git config user.name
🔎 git config user.email

✔️ Window와 Linux 라인 피드(Line Feed)를 일치 설정

🔎 git config --global core.autocrlf input 👈 Mac 사용자일 경우,,
🔎 git config --global core.autocrlf true 👈 Window 사용자일 경우,,

🤔 git 초기화

✔️ 해당 디렉토리를 git이 모니터링할 수 있게 하기 위해서는 git을 초기화 명령해주어야 합니다.

🔎 git init 👈 git 시작

✔️ 초기화된 git을 제거하고 싶을 때는 .git을 삭제합니다.

🔎 rm -rf .git 👈 git 삭제



3. git 기본 명령어

🤔 commit 준비시키기

✔️ git의 추적상태를 살펴보기 위해서는 status 명령을 통해 확인합니다.

🔎 git status

✔️ "working derectory" ⇢ "staging area"로 올리기

🔎 git add .

✔️ "staging area" ⇢ "working directory"로 내리기

🔎 git rm --cached *

✔️ 마지막 commit 시점으로 원상복구 시키는 방법

🔎 git reset --hard HEAD

🤔 변경 사항 확인하기

✔️ git status는 어떤 파일이 "working derectory"에 있고, "staging area"에 올라갔는지 상태를 볼 수 있지만, 변경 사항에 대해서는 알 수 없습니다. 이를 확인하기 위해서는 diff 명령어를 사용합니다.

🔎 git diff 👈 "working derectory"만 비교

🤔 commit 하기

✔️ "working derectory" ⇢ ".git directory"로 올리기

🔎 git commit -am "내용"

✔️ "staging area" ⇢ ".git directory"로 올리기

🔎 git commit -m "내용"

✔️ commmit history 확인하기

🔎 git log 👈 모든 commit 이력 확인하기
🔎 git log --all 👈 모든 log 보기
🔎 git log --all oneline 👈 간략히보기

✔️ commit version 이동

🔎 git checkout [commit ID] 👈 특정 commit 시점(ID)으로 이동
🔎 git checkout master 👈 최신(마지막) commit 시점(ID)으로 이동

🤔 push 하기

✔️ 원격 저장소로 코드 올리기

🔎 git push origin master

🤔 reset & revert

✔️ 과거 특정시점으로 이동하고 작업 결과 초기화(삭제) 방법으로 reset한 시점 이후 버전으로 다시 이동 불가

🔎 git log ⇢ 이동할 시점의 commit 일련번호 앞 6자리 복사 ⇢ git reset [6자리 일련번호] --hard

✔️ 과거 특정시점으로 이동하지만, 초기화는 아닌 해당 시점 이후 commit들은 임시 취소

🔎 git log ⇢ 이동할 시점의 commit 일련번호 앞 6자리 복사 ⇢ git revert [6자리 일련번호]

🤔 branch 다루기

✔️ branch 만들면, 현 시점에서 타임라인을 분기시켜줍니다.

🔎 git branch [생성할 branch명]

✔️ branch 이동

🔎 git checkout [생성한 branch명] 👈 생성한 branch로 이동합니다.
🔎 git checkout master 👈 다시 master branch로 되돌아가기

✔️ branch 생성 및 이동을 한번에 하려면 -b 옵션을 사용합니다.

🔎 git checkout -b [생성할 branch명]

✔️ branch 삭제

🔎 git branch -D [삭제할 branch명]

🤔 merge 다루기

✔️ merge는 다른 branch의 결과물을 특정 branch와 병합할 수 있게 해줍니다.
✔️ master branch로 다른 branch의 결과물을 가져올 때는 우선 master branch로 이동 후, marge를 통해 변화를 가져올 branch를 적어줍니다.

🔎 git checkout master
🔎 git merge [가져올 branch명] ⇢ :wq(저장하고, 나가기)



4. git 협업 명령어

🤔 github에 소스 올리기

✔️ 추적중인 git 디렉토리를 github 원격 저장소와 연결하는 명령어는 아래와 같습니다.

🔎 git remote add origin [github repository url]

✔️ 원격저장소와 연결되었는지 확인 방법

🔎 git remote

✔️ 연결이 되었다면, commit한 소스를 git push로 github에 업로드합니다.

🔎 git push -u origin master

🤔 repository 초대하기

✔️ 다른 사람과 협업하기 위해서 초대하려면, github의 아래 경로에서 추가할 수 있습니다.

🔎 github repository ⇢ Settgins ⇢ Manage access

🤔 소스 복제하기

✔️ github의 올린 소스를 복제해서 내려 받으려면 clone 명령어를 사용합니다.

🔎 git clone [repository url]

🤔 소스 상태 최신화하기

✔️ fetch 명령어를 통해 상태를 갱신하고, status로 확인하면 현재 자신의 소스가 타임라인에 뒤쳐져있는지, 최신상태인지 확인할 수 있습니다.

🔎 git fetch ⇢ git status

✔️ 작업을 시작하기 전이나 push하기 전에 현재 버전의 최신 상태를 확인하지 않으면 충돌이 발생할 수 있습니다. 이에 최신상태가 아니라면 pull로 당겨옵니다.

🔎 git pull [원격명][브랜치명]
🔎 git pull origin master

🤔 충돌 해결하기

✔️ 협업을 하다 충돌이 발생하면, 어떤 부분에서 충돌이 일어났는지 vscode에서 볼 수 있습니다. 이 부분에서 head가 자신이 수정한 부분입니다. 어떤 것을 반영할지 둘 중 하나만 남긴 뒤, commit해줍니다. 터미널에 안내표시를 확인하고 :wq로 저장해준 뒤, push합니다.

🤔 원격 브랜치 삭제하기

✔️ 원격 저장소 연결을 해제하려면 -d 옵션을 사용합니다.

🔎 git push -d [원격명][브랜치명]
🔎 git push -d origin my-idea

profile
Keep Going, Keep Coding!

0개의 댓글

Powered by GraphCDN, the GraphQL CDN