Git과 명령어

2020년 07월 28일, 22:50
  • Git

    • Git을 사용하는 이유?

      1. 버전관리.

        git commit 하는 과정은 버전을 하나씩 만든다고 생각하면 됨.

      2. 백업.

        로컬저장소에서 원격저장소에 올리는 행위(git push)

        원격저장소에서 로컬로 가져오는 행위(git pull)

      3. 협업.

        백업은 나 혼자만 사용하는거라면 협업은 여러 사람이 이용하면 협업.

        하지만, 같은 파일을 수정하는 경우? 이런 경우를 Git이 잘 해결해줌.

    • .git ⇒ repository 버전을 저장하는 곳.

    • working tree 버전으로 만들어지는 전 단계.

    • staging Area 버전으로 만들 파일들을 올리는 곳. → 여기서 이제 repository로 가면 버전이 생성.

    • branch

      • git branch 하면 목록을 볼수있음.
      • git branch {이름} branch를 만들 수 있음.
        • git log —all —graph —oneline으로 확인 가능.
      • 같은 뿌리에서 나왔지만 이후에 서로 다른 commit을 가지는 버전.
      • 같은 폴더인데 병합하려고하면 conflict(충돌이 일어남.) → 수동으로 수정.
      • checkout 명령어를 사용해 branch를 바꿀 수 있음.
    • git 명령어

      • init

        • 현재의 디렉토리를 Git 저장소로 초기화.
      • status

        • 상태를 물어보는 명령어.
          • Untracked files ⇒ add로 올려줘야 git에서 관리를 함.
      • add

        • untracked file들을 올려줌.
        • 버전이 될 파일들의 목록.
      • commit

        • 버전을 만들어 주는 것.
        • commit 옵션들.
      • log

        • commit(버전)을 확인하고 싶을때,(q를 누르면 나가짐.)
        • 옵션들
      • diff

        • 변경된 파일 내용의 원본과 바뀐 파일의 차이를 보여줌.
        • 버전을 만들기전의 차이.
      • checkout

        • 이전의 commit 즉 이전 버전으로 가고 싶을때 사용.
          • git log를 하면 이전의 커밋이 없어진것처럼 보임.(HEAD가 옮겨진 것)
        • git checkout master를 하게되면 HEAD가 다시 master로 가서 최신으로 유지.
      • reset(삭제)

        • 해당 버전(commit)으로 되겠다. 돌아가겠다 정도로 생각하면 됨.
        • 주의! 다른 사람 버전에는 하면 안됨.(협업 시)
        • 옵션들
          • —hard : 우리가 수정하고 있던 것까지 되돌림.
      • revert(버전은 납두고 되돌림)

        • 삭제 , 보존의 목적 둘 다 달성 가능.
        • reset과 다르게 이전 버전으로 돌아가기 위해서는 현재 버전을 revert해야함.
          • ex) R4에서 R3로 가고 싶으면 R4에서 해야함.
          • 주의해야할 것은 역순으로 revert를 해야 충돌이 안일어남.(R2를 하려면 R4,R3를 해야함)
      • branch

        • git branch 하면 목록을 볼수있음.
        • git branch {이름} branch를 만들 수 있음.
          • git log —all —graph —oneline으로 확인 가능.
        • 같은 뿌리에서 나왔지만 이후에 서로 다른 commit을 가지는 버전.
        • 같은 폴더인데 병합하려고하면 conflict(충돌이 일어남.) → 수동으로 수정.
        • checkout 명령어를 사용해 branch를 바꿀 수 있음.
      • merge

        • 서로 다른 branch를 합침.
        • 합치려고 하는 공통의 조상을 base라고 함 그리고 그것을 합치면 ⇒ merge commit
          • 3가지를 비교해서 변경된 사항들은 conflict없이 바로 변경.
          • cf) 2가지를 비교하게 되면 다른 부분은 모두 conflict가 일어남.
      • fetch vs pull

        • fetch는 코드만 가져옴.
        • pull은 코드를 가져와서 merge. → conflict가 일어날 수 있음.
        • rebase를 이용한 fork 원본저장소랑 최신 유지 참고 사이트
    • 이번에 쓴 clone 명령어 옵션.

    git clone 주소 -b {branch이름} —single-branch
    

    깃 클론시 다른 브랜치들은 가져오지 않고 해당 브랜치만 가져와서 클론.(많은 브랜치들이 있을때 유용.)