카테고리 없음
Git - part 2 -1
코드몬스터
2022. 8. 15. 18:28
728x90
수정 중입니다.
👉 과거로 돌리는 방법
📌 Reset VS Revert
[Reset]
- git reset --hard “<해쉬>"
-
- 말 그대로 시간을 과거로 돌리는 방법
- 과거로 돌아간 다음 History 에서 삭제 된다.(이후 시점의 기록들이 삭제 된다.)
-
- git reset --soft
- repository 에서 staging area 로 이동
- git reset --mixed
- repository 에서 working directory 로 이동
[Revert]
- 한 번 공유가 된 commit 들은 revert 를 이용해서 되돌려야 한다.
- 삭제하지 않고 특정 부분만 콕 집어서 되돌릴 수 있다.
👉 Branch(브랜치)
- 프로젝트를 하나 이상의 모습으로 관리해야 할 때
- 예) 실배포용, 테스트서버용, 새로운 시도용
- 여러 작업들이 각각 독립되어 진행될 때
- 예) 신기능1, 신기능2, 코드개선, 긴급수정 등
- 각각의 차원에서 작업한 뒤 확정된 것을 메인 차원에 통합
📌브랜치 생성
- checkout 명령어가 switch, restore 역할 분리
# 브랜치 생성
git branch <브랜치명>
# 브랜치 목록 확인
git branch
# 브랜치 변경
git switch
# 브랜치 생성과 동시에 이동하기
git switch -c new-teams
# 브랜치 삭제하기
git branch -d <삭제할 브랜치명>
# 지우는 브랜치에 다른 브랜치로 적용되지 않은 내용의 커밋이 있을 시
git branch -D 옵션으로 강제 삭제
# 브랜치 이름 바꾸기
git branch -m <기존 브랜치명> <새 브랜치명
# 원격 저장소 브랜치 가져오기
git checkout -t origin/<브랜치명>
📌브랜치 합치는 방법
Merge
- merge는 reset 으로 되돌리기 가능
# main 브랜치로 이동
git merge <브랜치명>
ex) git merge add-coach
merge 적용한 겨우
병합된 브랜치는 삭제
# 사용이 끝났기 때문에 제거
git branch -d <브랜치명>
📌rebase
팀원들끼리 이미 공유된 커밋들에 대해서 rebase 를 사용하지 않는 것이 좋다.
# merge 와 반대로 앞에 붙이는 브랜치를 메인으로 사용
git rebase main
# main branch는 여전히 이전 위치에 존재하고 있기 때문에 이동시켜야한다.
# main 브랜치로 이동 후 아래 명령어로 new-teams의 시점으로 fast-forward
# main 브랜치로 이동
git merge new-teamse
📌브랜치 충돌 해결
# merge를 중단하고 되돌리기
git merge --abort
만약 출동 해결이 어려운 경우
git merge --abort
git rebase --continue
👉 HEAD
- 특정 브랜치의 최신 커밋 위치를 나타내고 있다.
- 현재 HEAD 위치 앞 뒤로 이동
- ^ 또는 ~ : 개수만큼 이전으로 이동
# check out
git checkout HEAD^^^ : 세 칸 뒤로 가겠다.
git checkout HEAD~~ : 두 칸 뒤로 가겠다.
git checkout - : 컨트롤 + z 와 같은 느낌으로 한 단계 되돌려준다.

- HEAD는 아직 이름이 안 지어진 브랜치 이다.

[git hash]
- commit 값?? 대신 옆에 빨간 박스의 값을 hash 라고 하며 사용할 수 있다.

👉 fetch vs pull
📌 git pull ?
원격저장소에 있는 프로젝트의 변경사항을 그대로 로컬저장소에 옮겨와 자동으로 병합
팀 단위로 사용하는 계정이 아닌 개인적으로 깃허브를 사용하는 사람들이라면 git pull 명령어를 가장 많이 사용할 것이다.
"변경 사항을 가져옴과 동시에 자동으로 병합이 되기 때문에 무엇이 추가되고 병합되었는지 확인이 안 됨"
📌 git fetch ?
원격저장소에 있는 프로젝트의 변경사항을 가져오기만 한 후 병합(merge)은 따로
깃 입문자 또는 깃허브를 개인적으로 사용하는 사람이라면 git fetch 명령어는 거의 사용하지 않을 것이다.
"다른 사람이 수정한 부분을 확인하고 병합할 수 있다는 장점이 있음"
[fetch 사용 방법]
- git fetch origin
- 원격의 변화를 일단 merge 하지 않고 가져온다
- 로컬 파일에 직접 추가 되지 않는다..! - git checkout origin/main
- 바뀐 내용이 로컬에 적용된다.(직접 적용되는 것은 아니다)
- 따라서, 어떤 변화가 생겼는지 로컬 데이터를 바꾸지 않고 코드를 돌려볼 수 있다.
- 문제가 있으면 되돌리면 된다.(git swtich main) - git pull or git merge
- 확인 결과, 괜찮으면 병합하면 된다.
# 차이점을 알려준다.
git diff <로컬 브랜치> <리모트 브랜치>
3. git clone ?
clone이라는 단어처럼 원격저장소의 내용을 새로운 폴더에 그대로 복사하는 것!