article thumbnail image
Published 2021. 10. 22. 17:32

git 이란?

git : 버전관리 하는 프로그램

Github : git으로 관리하는 프로그램을 올려둘 수 있는 곳이 github, 원격저장소

commit : 프로젝트 디렉토리의 모습을 하나의 버전으로 남기는 행위 & 결과물

repository : commit이 저장되는 곳

.git : repository

git init : 비어있는 레포지토리를 생성


commit 시 주의사항

commit : 이 순간을 기억해줘

commit을 할때는 누가 했는지 남겨야 한다.

협업할 때 어떤 커밋을 누가 했는지 구별하기 위해서 한다.


처음으로 커밋할 때 : 사용자 이름, 이메일 주소

$ git config user.name "SunWooChan"
$ git config user.email "swc5770@naver.com"

이제 커밋을 하면 내 이름과 이메일 주소도 같이 저장된다.


커밋 메시지 남기기 : -m

커밋할 때는 이름, 이메일 주소 뿐만 아니라 어떠한 변경사항이 있었는지에 대한 정보도 추가해주어야 한다.

이것을 커밋메시지 라고 한다.

그러면 에러메시지가 뜬다.

 Untracked files  : 깃에 의해 아직 추적되지 않고 있다.

 nothing added to commit  : 커밋할 파일들을 지정해 주어야 한다.


커밋할 파일을 지정해주기 : git add

add : 수정된 파일의 모습이 커밋에 포함될 것이라 지정하는 것!

$ git add main.py redvelvet.mp4 redvelvet_output.mp4

 

다시 커밋해보면

root-commit : 프로젝트의 첫번째 커밋이다.

3개의 파일이 변경되었다고 나오는데, 추가한 파일이 나온다.

65 insertions(+) : 65개의 줄이 추가되었다.

 

변경 사항이 있는 디렉토리를 staging area에 올려주는 커맨드

$ git add [디렉토리명]

변경 사항이 있는 파일들을 한번에 staging area에 올려주는 커맨드

$ git add .

Git이 보는 파일의 4가지 상태

$ git status

하면 상태 볼 수 있다.

 

1) Untracked 상태

Untracked는 '추적되지 않고 있는'이라는 뜻. 이 상태는 파일이 Git에 의해서 그 변동사항이 전혀 추적되고 있지 않는 상태를 뜻한다. 예를 들어, 파일을 새로 생성하고 그 파일을 한 번도 git add 해주지 않았다면 이 상태이다.

 

2) Tracked 상태

파일이 Git에 의해 그 변동사항이 추적되고 있는 상태입니다.

 

2-1) Staged 상태

파일의 내용이 수정되고 나서, staging area에 올라와 있는 상태를 Staged(스테이징된, stage area에 올려진) 상태라고 한다.

새로 생성한 파일에 내용을 쓰고 git add를 해주거나, 한 번이라도 커밋에 포함됐었던 파일이라도 내용을 수정하고 git add를 해주면 이 상태이다.

 - git add 해주면 Staged 상태가 된다.

 

2-2) Unmodified 상태

현재 파일의 내용이 최신 커밋의 모습과 비교했을 때 전혀 바뀐 게 없는 상태면 그 파일은 Unmodified(수정되지 않은, 변한 게 없는) 상태이다. 커밋을 하고 난 직후에는 working directory 안의 모든 파일들이 이 상태가 된다.

 

2-3) Modified 상태

최신 커밋의 모습과 비교했을 때 조금이라도 바뀐 내용이 있는 상태면, 그 파일은 Modified(수정된) 상태이다.

 - 파일 내용을 수정하면 Modified 상태가 된다.


git add 취소하기

$ git reset

파일을 변경한 이후 git add를 하면 커밋할 파일이 지정된다.

여기서 뭔가 잘못 됐다 싶어서 커밋을 하지 말아야 한다면?

git reset을 이용하면 된다.

 

git reset은 staging area 에서 파일을 제거한다.

하지만, 변경된 파일은 내가 작업하던 디렉토리에 그대로 남아있으며, 여기서 git status를 치면 Modified 라고 나올 것이다.

다시 그 파일을 수정하기 전으로 돌려주고 git status를 치면 Modified가 뜨지 않는다.

 


로컬 레포지토리와 똑같은 레포지토리를 깃허브에 만들기

깃허브에 레포지토리를 하나 만들어보자.

https://github.com/SunWooChan/Redvelvet.git 

 

그러면 위에 두개의 커맨드 라인이 보인다.

 

위에 있는 거는 로컬 레포지토리를 만들고, 커밋한 후에 깃허브에 업로드 하는 방법이고

$ echo "# Redvelvet" >> README.md
$ git init
$ git add README.md
$ git commit -m "first commit"
$ git branch -M main
$ git remote add origin https://github.com/SunWooChan/Redvelvet.git
$ git push -u origin main

 

아래있는 거는 이미 만든 로컬 레포지토리를 깃허브에 업로드 하는 방법이다.

$ git remote add origin https://github.com/SunWooChan/Redvelvet.git
$ git branch -M main
$ git push -u origin main

 

나는 이미 위에서 로컬 레포지토리를 만들어놨기 때문에 바로 업로드하면 된다.

 

그러면

이렇게 업로드가 된다!

 

이렇게 깃허브에 업로드된 레포지토리를 Remote repository 라고 한다.

 


git push

README.md 만들고 커밋해보자.

만들었으면 먼저 git add . 을 하고

커밋 메시지를 남기기 위해 git commit -m "Create README.md" 를 한 후 커밋하자.

$ sudo vim README.md
$ git add .
$ git commit -m "Create READEME.md"

Local repository에서 새로운 커밋을 했고,

방금 위에서 한 커맨드로 인한 Remote repository에서의 새로운 커밋은 없었다!

 

로컬 레포지토리에서 리모트 레포지토리로 새로운 커밋을 하려면 다른 작업이 필요하다.

그건 바로 git push 이다.

 

 

이 작업이 완료되고 다시 깃허브에 들어가면

README.md 파일이 추가된 것을 확인할 수 있다.

일반적으로 프로젝트에 관한 내용을 README.md 에 담기 때문에 깃허브에 들어가면 바로 보여준다.

 

정리하자면

  1. git add . 를 통해 Local repository에 커밋을 해주고
  2. git push 를 통해 Remote repository에 커밋을 해주면 깃허브에 올라간다.

git pull

그럼 최신화된 Remote repository를 내 Local repository에 업로드하려면 어떻게 해야할까?

이렇게 README 파일을 바꿔주고 Commit changes 를 하면

나의 Local repository는 구식이 되어버린다.

 

이제 Remote repository의 새로운 커밋을 Local repository로 가져와 보자.

git pull 을 이용하자!

 

잘 바뀌었다.

이렇게 최신 레포지토리를 가져와 보았다.


나의 친구들도 Repository에 git push 할 수 있게 해주기

원칙적으로는 자신의 Remote repository에는 자기만 git push 할 수 있다.

내 친구들도 git push 할 수 있게 해주려면 그 사용자를 해당 Remote repository에 collaborators 로 지정하면 된다.

 

Setting → Manage access → Add people → 사용자 계정 입력

그러면 초대장이 발송된다.

 

초대장을 수락하면 성공!


git clone [프로젝트 깃허브 주소]

깃허브에 올라온 프로젝트를 가져와보자.

 

넘파이 프로젝트 가져오기

$ git clone https://github.com/numpy/numpy.git

이렇게 하면 넘파이 레포지토리가 다운된다.

 

이렇게 git clone 커맨드를 이용하면 다른 사람이 하고있는 프로젝트의 레포지토리를 그대로 내 컴퓨터로 복제할 수 있다.


마크다운 예쁘게 작성하는 법

https://gist.github.com/ihoneymon/652be052a0727ad59601

 

마크다운(Markdown) 사용법

마크다운(Markdown) 사용법. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

 

 

Ref : codeit

'🚦 Server > git' 카테고리의 다른 글

git 명령어 정리  (0) 2022.03.04
git commit 다루기  (0) 2021.10.26
복사했습니다!