다른 사람들과 협업을 하면서 git을 사용했지만, 완전히 내것으로 만들기가 힘들었어서, do it git이라는 책을 사서 공부한 내용을 정리해 보았다.
깃을 사용하기 전 사용자 정보를 입력하여야 합니다. → 그래야 어떤 버전을 누가 언제 만들었는지 쉽게 파악 할 수 있기 때문입니다.
git config -global user.name “사용자이름”
git config -global user. email “사용자이메일”
git init ( 현재 디렉터리에서 깃을 사용 할 수 있도록 초기화함)
- 버전을 만드는 단계에는 <작업트리> → <스테이지> → <저장소>로 된다.
- 작업트리 : 작업트리는 파일 수정 ,저장 등의 작업을 하는 디렉터리임.
- 스테이지 : 버전으로 만든 파일이 대기하는 곳임. (예로, 작업트리에서 파일 10개를 수정했는데, 4개만 버전으로 만들려면 이 파일 4개만 스테이지로 넘겨줌.)
- 저장소: 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳임.
- git status 명령어를 작성하면 깃의 상태를 볼 수 있다.
- 수정한 파일 스테이지에 올리기
-- git add <파일.txt>- 스테이징한 파일 커밋하기
-- git commit -m “message”- 저장소에 저장된 로그 확인
-- git log
- 스테이징과 커밋 한꺼번에 처리
-- git commit -am “message”
-> 이는 이전에 커밋한 적이 있다면 사용한다.
- git diff
- 이는 변경 사항에 대해서 확인하는 명령어이다.
- 어떤 파일을 수정하고 스테이징에 올려놓지 않았을때, 이미 작성된 파일과 방금 수정한 파일의 정보를 확인할 수 있음.
- 작업트리에 있는 파일은 tracked, untracked 상태로 나뉜다.
- 한번 커밋한 파일은 깃이 계속 추적하고 있다는 tracked 상태를 의미한다.
- 한번도 커밋하지 않은 파일은 untrecked 상태를 의미한다.
- git log —stat 의 명령어는 커밋과 관련된 파일까지 함께 볼 수 있음
- 작업 트리에서 수정한 파일 되돌리기
- git restore <파일.txt>
- 스테이징한 파일을 되돌리기
- git restore -staged <파일이름.txt>
- 최신 커밋한 파일 되돌리기(되돌리면, 작업트리에 수정한 파일로 돌아옴)
- git reset HEAD^
- 특정 커밋으로 되돌리기 이 를 사용하면 커밋을 R2로 되돌렸다면 이전에 R3,R4 커밋은 삭제가 됨.
- git reset —hard “복사한 커밋 해시”

- 커밋 변경 이력 취소하기( 이것은 R5가 최신 커밋이면, R2의 커밋 해시를 revert하면 R5는 삭제는 안되고 남아있고 R2로 최신커밋을 바꾸게 됩니다.
- git revert “복사한 커밋 해시”
- git branch <브랜치 이름>
- 새로운 브랜치가 만들어집니다.

그런데 여기서 새로운 커밋을 하게 되면 최신 커밋은 work4에만 적용이 되어있는 걸 알 수 있음.

- git switch <브랜치 이름>
- 브랜치를 전환할 수 있음.

- git log -oneline -branches
- 해당 커밋이 어떤 브랜치에서 만든 것인지 구별 가능

- git log -oneline -branches -graph
- 브랜치와 커밋 관계를 좀 더 보기 쉽게 그래프 형태로 표시됨.
- git log <브랜치1 이름 >..<브랜치2 이름>
- 브랜치 사이의 차이점을 알 수 있음. 이렇게 작성 시 브랜치2에만 있는 커밋을 보여줌
- 서로 다른 파일 병합하기
- 처음에 main브랜치에서 git branch <이름>을 적어서 브랜치를 만듭니다.
- 그리고 main 브랜치에서 새로운 파일 main.txt를 만듭니다. 그 후 커밋 후
- git switch <새로운 브랜치>로 전환 시킵니다.
- 그리고 새로운 파일 o2.txt를 만듭니다. 그리고 커밋을 합니다.
- 그리고 main 브랜치로 다시 전환 후 git merge o2를 하면 병합이 완료가 됩니다
- 서로 다른 브랜치에서 한 문서의 다른 부분을 수정했을 때 병합하기
- 위와 똑같은데 그냥 같은 파일에서 다른 부분을 수정하는 것 뿐이다.
- 같은 부분을 수정했을 때 병합하기
- 위와 같이 하고나면 에러가 뜨는데, 그럼 vim <해당문서>에서 수정을하고 커밋을 하면됩니다.
- 브랜치 삭제하기
- git branch -d <브랜치 이름>
- 브랜치는 삭제가 되지만 같은 이름으로 다시 브랜치를 만들면 예전에 작업했던 내용이 그대로 나타남.
- cherry-pick으로 병합하기
- cherry-pick은 브랜치가 t1,t2,t3 가 있을떄 최신커밋은 t3라고 할때, main브랜치와 t2버전을 병합하고 싶을떄 사용하는 것입니다.
- 메인 브랜치로 switch를 하고 git cherry-pick <체리픽할 해시>를 쓰면 병합이 됨.
- git remote add origin <복사한 주소>
- 이렇게 하면 주소가 연결이 됩니다. 확인 하고 싶다면, git remote -v 이다.
- git push -u origin master(main)
- 이는 지역 origin이름을 가지는 서버의 master 브랜치에 현재 브랜치를 업로드함.
- -u는 지역 저장소의 브랜치를 원격 저장소의 브랜치에 연결하기 위한 것으로 처음 말고는 그 후에는 사용할 필요가 없음.
- git clone 원격 저장소 주소 <파일이름>
- git pull origin master(main)
- 원격 저장소을 지역 저장소의 master 브랜치로 가져오라고 하는 것.
- 원격 브랜치 정보를 확인 후 커밋을 하기 위함.
- git fetch- 이를 통해 정보를 가져옴.
- git diff HEAD origin/master(main)
- 추가된 정보를 확인할 수 있음.
- git merge origin/master(main)
- 원격 저장소의 커밋을 확인 후 지역저장소에 합치기
- 이때까지 한 pull가 fetch,merge를 한번에 처리한 것임.