프로젝트폴더 진입 후 git폴더 생성 후 해당 폴더로 진입하여 연습! (window Cmder)
(터미널 깨끗하게 만들기 ctrl+k)
mkdir git
cd git
(위에서 생성한 git폴더 진입)
git init
(위에서 생성한 git 폴더 안에 저장소 .git 생성)
(저장소 삭제:rm -rf .git
)
start .git
(저장소 진입)
mac:open .git
새로운 파일 생성
echo hellow world! > a.txt
echo hellow world! > b.txt
echo hellow world! > c.txt
브랜치명의 색이 바뀌는데 이것은 working directory 안에 변경사항이 생겼고 아직 커밋되지 않았음을 뜻한다.
저장소의 정보를 확인
git status
untracked된 파일을 staging area에 옮기기
git add
git status
를 통해 다시 확인해보면 내용이 달라졌음을 알 수 있다.
나머지 파일도 staging area로 옮겨주기
(이렇게도 가능)
이 시점에서 a.txt파일에 내용 추가하기
echo jiwon >> a.txt
위에서git add
를 해주어서 파일들을 git이 tracking하고있기 때문에 a가 변경되었음을 감지하고 상태에 표시해줌
위의 상태에서
git rm --cached <file>
명령어를 이용하면 staging area에서 다시 working directory의 untracked상태로 바꾸어줄 수 있다.
변동사항을 git에 업로드하고싶지 않다면 해당 파일을 .gitignore에 넣어준다
echo *.log > .gitignore
파일 수정된 내용 확인하기
git diff
: 추가 옵션 없이 diff만 사용하면 working directory에 있는 것만 보여줌
a/c.txt에서 a는 이전 버전이라는 뜻. (이전 버전이란 working directory에 있는 파일이라면 이전에 커밋된 버전, staging area에 변경된 내용이 있다면 그것이 이전 버전)
현재 커밋된 내용은 없으므로 staging area의 내용과 b/c.txt를 비교@@ -1 +1,2 @@
-는 이전 버전 (1번째 줄이 이전 버전)
+뒤로는 수정된 버전 (1번째 줄부더 2번째 줄 까지 확인해보라는 뜻)
커밋
git commit -a
: staging area의 모든 파일 커밋
git commit -am "message"
:커밋 메시지 입력
리셋 (과감한 방법) - first, second, third 중 seconde commit으로 되돌아갈 시 third commit은 삭제되는 방법
git reset (second 해시넘버 앞 6자리) --hard
git log
리셋(소심한 방법) - second 상태로 넘어가도 다시 third로 돌아갈 수 있음
취소할 시점을 해시넘버로 입력한다.(가장 최근 것)
git revert (해시넘버 앞 6자리)
second에서 third로 넘어갈 때의 변화를git revert (third 해시넘버 앞 6자리)
를 이용해서 반대로 만들어주는 것
예를 들어 third가 second의 a.txt파일을 삭제하고 d.txt파일을 추가하고 b.txt를 변경했다면 revert를 통해 third에서 a.txt파일을 추가하고 d.txt파일을 삭제하고 b.txt파일을 second와 같이 변경시켜줌.
다시 third로 가고싶으면git reset (third 해시넘버 앞 6자리)
브랜치 생성
git branch 브랜치명
브랜치 확인git branch
브랜치 변경git checkout 브랜치명
머지
git merge 병합할 브랜치명
시각적으로 보기
git log --graph --all --decorate
브랜치 삭제
git branch -D 브랜치명