git 명령어
- git --version : 버전 확인
- git config --list : 사용자 정보 확인
ex. 나는 username = nayonsoso, email = panda0329@naver.com으로 설정해둠 - git init : 명령어 실행 이후, 해당 폴더를 git이 감시하기 시작함
- git add [파일명] : 파일 수정 후 파일을 Staging Area로 옮기는 명령어
복수의 파일을 add하려면, 파일명을 띄어쓰기로 구분하여 입력하면 된다.
이때 git ignore에 적어둔 파일은 add되지 않는다. - git commit -m ‘메세지’ : Staging Area에 있는 것을 repository에 반영하는 명령어
⇒ git add를 하고 git commit을 해야 파일이 저장소(repository)로 이동한다.
git add를 먼저 하지 않는다면, got commit을 할 수 없다. - git status : 파일의 상태를 알려준다.
깃 현상관리의 3단계
- 워킹 디렉터리 : 소스 코드를 작업하는 영역으로 코드를 추가, 수정, 삭제한느 작업이 이루어지는 영역을 의미
- 스테이징 영역 : 워킹 디렉터리에 Git add 명령을 실행하면 파일들은 Git의 스테이징 영역으로 이동하며
이를 통해 소스 코드의 상태 정보를 확인할 수 있다. - 저장소 영역 : 스테이징 영역에 있는 소스 코드에 Git commit 명령을 실행하면 최종적으로 Git의 저장소에 반영된다.
파일 상태의 4단계
Git status 명령을 실행하면 아래 상태 중 하나임을 확인할 수 있다.
- Untracked : 워킹 디렉터리에 추가되었지만 Git에서 관리하지 않는 상태 (add되지 않음)
- Unmodified : 신규로 파일이 추가되었을 때의 상태로 new file 상태와 동일 (add 후)
- Modified : 파일이 추가된 이후 해당 파일이 수정되었을 때의 상태 (add 후)
- Staged : Git의 스테이징 영역에 반영된 상태 (commit 후)
git diff
가장 최근 커밋과 지금 파일의 차이점이 무엇인지를 보여주는 명령어
- git diff : 차이를 알려주는 가장 기본적인 명령어
하지만 코드를 텍스트처럼 인식하기 때문에 띄어쓰기나 줄바꿈처럼 기능과 상관없는 것들도 차이점으로 인식한다는 단점이 있다. - git difftool [커밋 아이디] : 기능과 관련된 차이점을 알려주는 에디터를 띄울 수 있다.
뒤에 커밋 아이디를 옵션으로 달아 해당 커밋과 현재 파일의 차이를 볼 수도 있다. - git log --oneline --all : 커밋 아이디, 커밋 메세지를 볼 수 있다.
- 하지만 요즘은 IDE에서 git 확장 프로그램(ex. git graph)을 지원하기 때문에 터미널에 명령어를 입력하지 않고도 간단히 커밋 내용을 확인할 수 있다.
프로그램에 내장된 git기능
요즘은 터미널 or CMD에서 직접 git명령어를 입력하지 않는다.
대부분의 IDE에서 깃 확장 프로그램을 지원해주기 때문이다. (ex. git graph)
하지만 내가 실습하고 있는 Unity에서는 지원하지 않는다 ㅠ
그렇다고 CMD에서 진행하기는 번거롭기도 하고,
git과 관련된 다양한 기능을 지원하는 무료 툴들이 있으니 (ex. 깃허브 데스크톱, 소스트리)
이번 실습에서는 🌳소스 트리🌳를 이용하고자 한다.
branch
※ 여기부터는 협업 시 알아둬야 할 내용 ※
branch란? 간단하게는 커밋된 파일의 복사본 but, 나중에 merge할 수 있다는게 핵심!
사용 이유 : 협업을 위해
장점 ))
자신의 branch에서 작업을 하면 여러명이 동시에 작업할 수 있다.
나중에 merge하면 코드가 합쳐지므로 편하다.
또 master(or main)에서 작업을 하는게 아니므로 문제가 발생했을 때 고치기 쉽다.
- branch 명령어
- git branch [브랜치명] : 해당 위치에서 이름으로 branch를 만들 수 있다.
- git switch [브랜치명] : 해당 브랜치로 이동할 수 있다.
- git status : On branch ~~를 확인한다면 해당 브랜치로 온 것이다.
- git log --oneline --all --graph : 그래프 형식으로 브랜치를 보여줌 cf. HEAD는 내 현재 위치 / HEAD→main 이면 내가 지금 main에 있다는 것
이렇게 브랜치로 이동하여 작업을 하고 add, commit을 하여 작업을 이어갈 수 있다.
작업이 끝나고 나의 branch에서 잘 동작해서 이걸 main 브랜치로 합치고 싶으면,
main 브랜치로 이동해서 git merge [브랜치명] 명령어를 입력하면 된다.
push와 pull
push 와 pull의 뜻
pull은 깃허브에 업데이트된 내용을 로컬로 받아 오는걸 말한다.
push는 개발자가 커밋한 내용을 깃허브에 반영시키는 것을 말한다.
❗git commit을 하지 않고서는 git push를 할 수 없다.
명령어
git pull [remote url] [브랜치명] / git push [remote url] [브랜치명]
이때 매번 remote url을 입력하기 힘들기 때문에 보통 origin이라는 키워드를 대신 쓴다.
이때 origin이란, 처음 프로젝트에 등록된 리모트 저장소 즉,
git clone을 할 때 입력한 url이 origin 리모트 저장소가 된다.
git remote -v 명령어를 사용하면 단축 이름(ex. origin)과 URL을 함께 볼 수 있다.
정리
다른 개발자가 수정한 내용을 pull하고 싶을 때 : git pull origin master
내가 수정한 내용을 push하고 싶을 때 : git push origin yonso
Q. 유니티와 Git Lab은 어떻게 연결해야할까?
A. 유니티에는 비주얼 스튜디오처럼 IDE에서 깃을 지원하는 확장 프로그램이 있는건 아니다.
하지만, github desktop이나 source tree와 같은 툴을 이용해
유니티로 작업하던 것을 원격 저장소로 push, pull할 수 있다.
이때, 역할이 다르다는 것을 헷갈리지 말자.
- Source Tree : 원격 저장소와 로컬 파일을 연결해주는 역할
- Unity : 로컬 파일을 게임에 특화된 방법으로 작업하게 도와주는 역할
따라서, 이번 프로젝트는 Source Tree와 gitlab.tugraz.at의 계정을 연결하고,
Source Tree로 클론해온 다음,
내 브랜치에서 유니티로 작업을 하고,
Source Tree를 통해 변동 내용을 gitlab.tugraz.at으로 push하여 작업할 예정이다.
(tmi : gitlab.tugraz.at은 technical university of Graz 라는 학교 계정입니다)
Source Tree와 gitlab을 연결하는 과정에서 오류가 많이 발생했는데, 오답노트를 작성하자면,
Source Tree와 gitlab을 연결방법
1️⃣ 계정으로 연결하기
gitlab에서 PAT를 발급받고, 프로필에 있는 @뒤에 내용을 username으로,
PAT를 발급 받고 처음 뜨는 문자를 password로 입력해서 계정을 연결하면,
해당 계정이 속해있는 프로젝트를 띄워주는데, 골라서 clone하면 된다.
⇒ 이 방법이 내가 push했다는걸 나타내줄 것 같아서 나는 이 방법으로 진행했음!
2️⃣ SSH키 이용하기
설명하기 너무 방대.. 아래 유튜브 영상을 보고 따라하면 된다.
How to use Git GUI Sourcetree and Gitlab - YouTube