PlayData 백엔드 부트캠프 정리

PlayData 백엔드 부트캠프 Start 2일차

효건 2024. 8. 9. 00:11

 

깃 와 깃허브 2일차 

 

1. Git Merge

    가. Git Merge는 여러 branch를 하나로 합치는 과정이다. Commit을 생성하며 이전의 히스토리를 합친다. 

         * 어제 내용복습  main branch는 사실상 마지막에 합쳐야 한다. → 그래야 안정성을 확보할 수 있다.

                                     branch는 기능을 만들어 가기 위해 가지를 뻗어 가는 과정이다. 

                                     commit은 세이브포인트와 비슷하다고 할수있다. 

    나. Git merge의 과정은 2가지 경우에서 사용된다.

        1) 기능 브랜치 병합 (3-way merge) 

             2가지 이상의 branch에서 각각의 기능을 발전시켜 나갈때 공통 조상을 찾아 병합하는 과정이다. 동일한 파일이 없다면 상관이 없지만 같은 파일이 있다면 충돌이 발생했다는 것을 사용자에게 알려주고 해결을 요청한다. 이때 해결을 해야만 merge과정이 끝난다. 아니면 계속 대기 상태로 남아있는다 . 따라서 주의가 필요하다.

   

        2) Fast-Forward Merge

직접적인 후속 commit에서 분기되어 현재 branch에는 새로운 commit이 없는 상태 따라서 병합 commit 없이 commit 포인터만 이동 할때 사용     

 

    다. Git merge  Conflict  발생할 때

      왠만하면 vscode로 연결하여 보면 commit 까지 편안하고안전하게 할수있다. 따라서 vscode를 쓸수있는 상황이라면 무조건 사용하도록하자 

gitbash에서 해결하기 위해서는 충돌마커를 모두 제거할수있도록 변경사항을 결정,수정해야한다. 그리고 수동으로 commit해야한다.

 

2. Git diff

  • Git diff는 두 커밋 사이의 차이를 확인할수있음. → GUI(gitcraken 등)을 이용하는것이 유리함.

          아직 스테이지하지 않은 변경 사항에 대한 변경사항을 확인할수있음.

  • Git diff HEAD 현재 작업 디렉토리와 가장 최근 커밋(HEAD) 사이의 차이점

      커밋 이후로 어떤 변경 사항이 있는지 확인하는 데 사용,스테이징된 변경 사항과 스테이징되지 않은 변경 사항을 모두 보여줌

 

3. Git stash

Git에서 제공하는 일시적인 작업 저장소이자 아직 완료되지 않은 변경사항을 일시적으로 저장할 수 있으며, 나중에 다시 로드하여 작업을 계속할 수 있습니다.

따라서 commit으로 하기에는 좀 일이 적은것 같은데 내용이 날아갈것같다. 싶을때 사용하는 임시저장 시스템으로 이해하면좋을듯 하다.

 

4. Detached Head

보통 특정 커밋의 내용을 검토하거나, 특정 커밋 기반으로 새 브랜치를 만들 때 사용

정리하면 실험적인 프로그래밍을할때 일시적인 익명 branch로 작업하는것으로 이해하는 것이 쉬울듯하다. 

이 상태에서 프로그래밍을 하면 언제든 삭제될수 있고 변경사항은 참조되지 않는 커밋으로 삭제될수있음. 

5. Git Restore

작업 디렉토리(애드 전)나 인덱스의 변경사항(애드 후 커밋 전)을 특정 커밋의 상태로 되돌리는 데 사용됨.

다시말해서 원복하거나 변경사항을 제거하는등의 용도로 사용가능  

* add 후 커밋전의 상태는 Staging area에 있는것을 뜻함. 

5. Git Reset

현재 HEAD를 특정 커밋으로 이동시키는데 사용됩니다. 이는 주로 이전의 상태로 "되돌리고" 싶을 때 사용되는 명령어

지정된 커밋 이후의 모든 커밋이 사라지게 됩니다.

여기서 option 은 soft, mixed, hard등이 있음.(mixed가 기본옵션)

git reset --hard ORIG_HEAD는 한번만 취소할수있음. 같은 위치에서 두번 사용 불가 

* HEAD란 현재 체크아웃된 커밋을 가리킵니다. 여기서 체크아웃이란 현재 위치를 이야기함.

5. Git Revert

소하려는 커밋의 변경 사항을 반대로 적용하는 새로운 커밋을 생성

 

→ 그냥 한번에 잘 만들고 잘 저장하자!!! commit만드는 건 늘 신중하고 신중하고 신중하게 하자!!!  

5. Git HUB

git hub에서 다른사람의 commit과 코드를 확인하기 위해서는 zip파일을 다운로드 받는 것보다 clon으로 가져오는 것이 훨씬 합리적이고 좋은 방법이다.

git clone  <repository_url> 을 기입하게 되면 가져올수있다. 존 원격 저장소의 복사본을 생성하는 데 사용

 

흐름도

 

$ git remote add origin <https://github.com/user/repo.git> 으로추가한다.

여기 origin은 약속같은 규범이다. 굳이 다른것을 써서 협업하는 동료의 머리를 띵하게 하지말자

 

$  git remote show 으로 원격 저장소의 정보를 확인하자 

  git remote -v으로 원격저장소의 목록을 확인하자 

 

$  git push origin <branch>

     → 여기서 <branch>는 원격저장소에 푸시할 로컬 저장소의 branch 이름이다.

 

 

git pull은 git fetch와 git merge를 같이하는 것이라 생각해도 좋다.

$  git fetch 는 원격 저장소에서 정보를 가져오는 Git 명령으로 최신 변경 사항을 로컬로 가져오지만, 작업 중인 브랜치에 이 변경 사항을 병합하거나 커밋하지 않는다. 따라서 저장이 안된다고 이해할수있다. 

병합을 하거나 체크아웃을 하여 가져온 브랜치로 전환하는 과정이 필요하다.