git int

해당 디렉토리를 이제 저장소로 사용하겠다는 명령, 일종의 초기화

 

git config

사용자 이름과 이메일 설정.

 

git config --list

설정한 모든것을 확인할수 있음.

 

브런치 목록확인

지역 브런치 목록과 원격브런치 목록 확인(-r)

 

git status

현재 깃의 상태를 나타냄.

현재 master 브런치이며, main과 requisition.o가 untrackde 상태라는것을 나타냄.

 

 

git add

수정하거나 다룰 파일을 등록하는 과정. 한번등록하면 새로운 파일이 아닌이상 다시 add 할 필요는 없음

hello.c파일을 앞으로 저장소에 다루겠다는 등록.

 

hello.c등록후 untracked files에 해당파일이 추가된 모습

 

project관련 파일들을 모두 add함.

 

git commit -m "설명"

-m 옵션으로 수정된 버전을 commit한다.

 

git remote add origin URL

저장할 저장소의 링크를 등록하는 과정.

 

git push

현제 깃의 commit된 것들을 remote저장소로 업로드 하는 과정.

git push -u "현재 저장소" "원격저장소"

-u옵션으로 master브런치에 있는 commit들을 업로드

 

remote 저장소로 등록한 github site에 실제 적용된 모습.

실제 적용된 모습

 

파일수정

main.c 파일수정 후 git status를 통해 main.c가 수정중된 상태라는 것을 확인할 수 있음.

 

 

git diff

그 후 git diff를 통해 어디가 수정된것인지 자세히 확인 가능함.

git diff : 현재 작업디렉토리와 staged간이 차이를 비교.

git diff --staged : 현재 staged와 최근commit간의 차이를 비교

git diff commitid :commitid 해당 commit들 간의 차이를 비교.

 

text.txt 파일 수정 후 diff 확인

 

text.txt 수정,add 후 diff --staged확인

 

commit 버전간의 diff확인

 

현재 untracked 상태인 나머지 파일들을 모두 add한 후

 

상태 상태를 확인해보면 new file: 로 새롭게 등록됨을 알 수 있음.

 

그 후 make clean 과 a.out와 main을 삭제한 후 다시 commit을 해본다음

 

다시 git diff로 커밋간의 상태수정변화를 확인할 수 있다.

 

 

 

git log

지금까지 업데이트된 commit의 히스토리를 보여줌.

git log

 

 

--stat옵션을 이용해서 각 commit의 통계를 확인할수 있음. 어느 파일이 얼마나 수정되거나 추가되거나 했는지에 대한 것. +-,

 

 

원격저장소의 파일 지우기

 

github site를 원격저장소로 예를 든다면, 이와 연동된 로컬저장소에서 파일을 지우게 되면 원격저장소의 파일은 삭제되지않는데 이를 해결하기 위해서는 git rm 명령어를 사용해야한다.

 

더 이상 a.out과 main을 track하지 않는것을 확인할 수 있다.

 

add, commit push 취소하기

 

git reset HEAD [file]

뒤에 파일명이 없으면 add한 파일 전체를 취소한다.

 

 

git reset HEAD^

commit 취소.

 

 

text.txt파일을 수정 수 add하면 현제 modified 즉, staged에 올라간것을 확인할 수 있음.

 

이상태에서 git reset text.txt를 통해 상태를 staged상태에서 add되지 않은 modified상태로 바꿀 수 있음.

즉, add취소.

 

git reset HEAD~숫자

 

git reset HEAD~2를 통해 현재 commit으로 부터 2개 전의 commit으로 돌아감. 즉 ver3과 ver2는 없어짐.

하지만 commit한 최종 이력은 적용이 된 상태로 ver3, ver2가 사라지는 것임.

 

 

git revert

과거의 버전들중에 특정버전 또는 여러개의 버전을 최신의 버전으로 다시 불러오는 명령.

 

 

*git reset 과 git revert의 차이

두 명령어 모두 이전의 버전을 불러온다는 공통점이 있지만

reset은 불러오고자 하는 이전버전을 불러온 후 그 후의 버전들을 완전히 삭제하고 최신버전이었던 commit의 내용을 적용시킨다.

반면 revert는 삭제같은 것 없이 과거의 해당버전만을 꼭 잡아서 다시 불러오는 작업이다.

따라서 상황에 맞게 reset과 revert 각각의 잘 사용해야 한다.

 

commit 취소 예시.

 

git commit --amend

commit의 이름을 잘못 적었을 경우 수정하는 방법.

push취소.

위의 2개를 응용하여 commit을 되돌린 후 다시 push하는 방법으로 push를 취소한다.

 

 

git checkout 파일명

현제 수정하고 있는 파일에 대해 이전 commit버전을 불러올때

 

현제 수정하고 있는 파일에 대해 이전 commit을 불러올때

 

 

CO-WORK

서로다른 버전으로 만들다가 적절한 시점에서 합치는것, 합치는 부분 merge 나누는 부분 branch.

 

branch

기존 버전에서 새로운 업데이트 버전을 만들고 싶을때 branch로 시험삼아 만든 후 마음에 들면 master에 적용함.

 

내가 어떤 브런치에 작업하고 있는지, 내 위치를 확인하는 것이 굉장히 중요함.

git branch "이름"

새로운 브런치를 생성할 수 있음.

 

git branch

자신이 어떤 브런치에 있는지 확인하는 방법

 

git checkout "브런치이름"

현재 브런치를 나와서 해당 브런치로 이동하는 명령.

 

git merge "브런치이름"

해당브런치를 현재브런치에 병합하는 명령.

merge를 할때를 merge되고자 하는 브런치에서 해당명령을 수행하는 것이 중요함. 현재 브런치의 위치!

 

*merge충돌*

만약 브런치와 master에서 같은 이름의 파일을 다른내용으로 만든 후,

merge할 경우 충동이 발생함!!

이 경우 해당 파일의 내용이 수정되는데

수정해서 다시 commit할 수 있도록 파일이 수정됨.

merge 충돌 시 파일내부내용 변경

 

#시나리오#

아래 그림과 같은 작업 수행.

 

master에서 ver1,2,3 설정.

초기 ver1,2,3 commit한 상태

 

 

second 브런치를 만들어 이동.

 

 

new.txt를 만들어서 ver4 커밋.

 

 

그 후 다시 master브런치로 돌아가서

 

 

 

old.txt와 old2.txt를 만들어서 각각 ver5, ver6를 만듦.

master 에서 ver5

 

master 에서 ver6

 

 

다시 second로 이동하여 new2.txt를 만들어 ver7 commit.

 

master로 이동하여 second merge를 진행함. 이때 merge를 통해 ver8이 만들어짐.

 

second로 이동 후 old3.txt를 만들어 마지막버전9를 만듦.

 

 

최종 log graph모습

 

git rebase

 

git rebase -i --root 을 입력하면 다음과 같은 편집창이 뜬다.

아래 설명글에 나와있는 작업하고 싶은 키워드를 통해 위쪽의 commit 키워드들을 수정해주면 된다.

reword에 경우 또 다른 에디터 창이 열리게 된다.

reword를 적용한경우

 

 

rebase 적용전

 

 

rebase 적용후

 

 

 

 

+ Recent posts