git / github / Linux

김지후·2022년 6월 30일
0
  • git init : 해당 폴더가 git으로 관리 됨
  • git status : git 폴더들의 상태들을 알려줌(워킹 디렉토리, Staging Area, Git 디렉토리)
  • git rm [파일명] : staging area로부터 tracked file을 지움(이 후 반드시 커밋도 해야 함) - 실제 파일도 지워짐
  • git add [파일명] : [파일명]의 파일을 staging area로 올림

  • git commit -m “FIRST COMMIT” : staging area에 올려진 파일들을 Git 디렉토리로 올림(FIRST COMMIT 메시지와 함께)

  • Vi 모드로 진입 시

    i : 명령어 입력 모드에서 텍스트 입력 모드로 전환

    ESC(버튼) : 텍스트 입력 모드에서 명령어 입력 모드로 전환

    :q : 저장 없이 종료

    :q! : 저장 없이 종료(입력한 것이 있을 때)

    :wq : 저장하고 종료(입력한 것이 있을 때 사용)

    k : 위로 스크롤

    j : 아래로 스크롤

  • git log : 커밋 히스토리 조회하기

  • git reset : 원하는 시점으로 돌아간 뒤 이후 내역들을 지운다.

    • git log (되돌아기 원하는 시점의 해시 복사를 위해)
      git reset --hard <되돌릴 커밋 해시>
    • git reset --hard : 뒤에 커밋 해시가 없으면 마지막 커밋 상태(현 커밋 상태)로 초기화
  • git revert : 되돌리기 원하는 시점의 커밋을 거꾸로 실행한다.

    • git log (되돌아기 원하는 시점의 해시 복사를 위해)
      git revert <되돌릴 커밋 해시>
    • git revert --no-commit (되돌릴 커밋 해시) : 커밋하지 않고 revert하기
      (원하는 다른 작업을 추가한 다음 함께 커밋할 때 좋음)
      (취소하려면 git reset --hard 해버리면 됨)
  • branch

    • git branch <생성할 브랜치 명> : 브랜치 생성

    • git branch : 브랜치 목록 확인

    • git switch <이동할 브랜치 명> : 브랜치 이동

    • git branch -d <삭제할 브랜치 명> : 브랜치 삭제

    • git branch -m <기존 브랜치 명> <새 브랜치 명> : 브랜치 이름 바꾸기

    • branch 합치기 (merge, rebase)

      • merge : 두 브랜치를 하나의 커밋에 이어붙임
      1. main 브랜치로 이동
      2. git merge <병합할 브랜치>
      3. :wq로 자동입력된 커밋 메시지 저장하여 마무리
      4. git branch -d <병합할 브랜치> (병합된 브랜치 삭제)
        참고 : merge도 하나의 커밋이다. git reset --hard로 merge 하기 이전 시점으로 돌아갈 수 있다.
        <merge 과정에서 충돌이 일어날 경우>
        충돌 해결이 가능한 경우 :
        1. 충돌 부분 수정 후,
        2. git add .
        3. git commit
        충돌 해결이 불가능한 경우 :
        git merge --abort 을 하여 merge를 중단한다.
      • rebase : 브랜치를 다른 브랜치에 이어붙인다.

        1. 병합할 브랜치로 이동한다.
        2. git rebase main(병합은 되었지만 main 브랜치는 뒤쳐져 있는 상황이다.
        3. main 브랜치로 이동 (뒤쳐져있는 main 브랜치를 땡기기 위한 작업)
        4. git merge <병합할 브랜치> (뒤쳐져있는 main 브랜치를 땡기기 위한 작업)
      1. git branch -d <병합할 브랜치> (병합된 브랜치 삭제)

        <rebase 과정에서 충돌이 일어날 경우>
        충돌 해결이 가능한 경우 :
        1. 충돌 부분 수정 후,
        2. git add .
        3. git rebase --continue
        4. 1, 2, 3의 과정을 충돌이 모두 해결될 때까지 반복

        충돌 해결이 불가능한 경우 :
        git merge --abort 을 하여 merge를 중단한다.

         

    git branch -m master main

    FORK / FETCH

  1. 협업 할 프로젝트 github창에서 Fork버튼을 누른다.
    (내 레포에 Forked된 프로젝트가 있을 것이다.)

    ((G-who0212/[프로젝트 명])의 이름으로..)

  2. 내 레포에서 git clone 을 한다.
    git clone [내 레포 주소] 폴더이름
    cd 폴더이름

  3. git remote -v (remote 관련된 정보를 볼 수 있다.)

  4. 오리지널 레포 주소를 upstream이름으로 등록해줌
    git remote add upstream [원래 레포 주소]

  5. git remote -v

  6. git fetch upstream
    원래 레포의 최신 업데이트를 가져옴(병합이 아님)
    (git log --decorate --all --oneline : 모든 브랜치에 대한 로그를 보여줌)
    git diff HEAD upstream/main : 지역 저장소의 최신 커밋과 원래 레포의 코드를 비교할 수 있음

  7. 오리지널 레포의 main 브랜치를 내 레포로 병합(merge)한다.
    git merge upstream/main

  8. 여기서부터는 내가 수정한 것들을 오리지널 레포로 올리고 싶을 때
    코드를 수정한다.

  9. git add .

  10. git commit -m "add something"

  11. git push (내 레포로 커밋됨)

  12. 깃허브의 오리지널 레포로 이동해서 New pull request를 눌러준다.

  13. compare across forks를 눌러준다.

  14. comment를 쓰고 create pull request를 눌러준다.

profile
JU KIM

2개의 댓글

comment-user-thumbnail
2022년 6월 30일

👍🏻❤️

1개의 답글