ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Git] Git 명령어 모음
    Github 2022. 12. 3. 17:07
    728x90

    1. Git 영역

    - Working Directory ( Local )

      : 개인 코드 작성

    - Staging area

      : git add를 통해 수정된 코드를 올리는 영역

    - Repository

      : git commit 을 통해서 최종 수정본을 제출


     

    2. github업로드 절차(프로세스)

    1. github 원격 저장소 생성

    2. github 원격 저장소 clone(복제하기)

    3. 내 로컬(컴퓨터)에 프로젝트 생성 후, 복제한 원격 저장소 다운받기

    4. 내 로컬의 원격 저장소 폴더에서 작업(코딩)하기

    5. add : 작업한 파일 중에서 원격 저장소에 반영할 부분 추가하기

    6. commit : 먼저 로컬(내 컴퓨터)에서 수정된 소스 파일 반영하기

    7. push : 로컬(내 컴퓨터)에서 수정한 소스 파일을 github원격 저장소에 저장하기

    8. github.com/[id]/[repository] 링크를 통해 정상적으로 업로드 되었는지 확인


     

    3. Git 명령어 모음

    Git 최초 설정 ( 사용자 이름과 이메일 설정 )

      global 옵션 : 현재 시스템의 모든 Git작업에 사용할 user.name, user.email 을 설정합니다.

    $ git config --global user.name [이름]
    $ git config --global user.email [이메일]

     

    로컬 저장소의 git 히스토리 삭제

    $ rm -rf .git

     

    초기화

    $ git init

     

    설정 확인

    $ git config --list

     

    GitHub 프로젝트 로컬에 가져오기

      clone으로 repository 데이터 가져오기

     

    가져오고자 하는 repository의 code > https 주소를 복사한다.

     

    $ git clone [주소]

     

    로컬 Git 저장소에 원격 저장소를 추가

    $ git remote add [원격저장소 이름 지정] [주소]

     

     

    원격 저장소 목록 조회

    $ git remote -v

     

    원격 저장소 branch 새로 생성 후 해당 branch로 전환

    $ git checkout -b [branch이름]
    $ git checkout [commit id]

    버전 전환.

     

    " git commit [v6의 commit id] " 를 입력하면 아래와 같이 HEAD가 v6를 바라보는 상태가 됩니다.

     

    작업도 v6까지의 작업 상태로 돌아가게 됩니다.

     

    branch 생성

    $ git branch [branch이름]

     

    원격 저장소의 branch 확인

    $ git branch -r
    $ git branch 	// 모든 branch 출력, *붙어있는게 현재 선택된 branch

     

    branch 삭제

    $ git branch -d [branch]

    branch 변경(전환)

    $ git switch [branch이름]

     

    현재 위치 출력

    $ pwd

     

    원격 저장소에서 로컬 저장소로 소스 가져오기

    - pull   : merge O, 원격 저장소의 소스를 가져오고 해당 소스가  현재 내 소스보다 더 최신 버전이라고 하면 지금의 버전을 해당 소스에 맞춰 올린다. 

    - fetch : merge X, 소스만 가져온다.

    $ git fetch [remote]
    $ git pull [remote명] [branch명]

     

    Merge (병합)

    exp 브런치를 main 브런치와 병합

    $ git checkout [branch]  //git checkout main
    $ git merge [branch]	//git merge exp

     

    충돌

    exp, main 브런치로 따로 작업하다가 Merge하는 경우 수정된 파일이 우선이 됩니다. 하지만 둘다 수정이 된 경우에는 conflict가 발생합니다. merge 충돌입니다.

    이 때 사용되는 해결 방법인 "3 way merge" 가 있습니다.

    3 way merge는 충돌이 발생한 branch의 부모 branch(base branch)를 기준으로 개발자가 직접 내용은 변경합니다.

    base branch를 기준으로 수정 작업이 이루어졌으니 이 시점이 기준이 되는 것입니다.

     

    Working Directory상의 변경 내용을 Staging area에 추가

    $ git add .           //현재 디렉토리의 모든 변경 내용을 staging area로 넘긴다.
    $ git add -A           //작업 디렉토리내의 모든 변경 내용을 모두 staging area로 넘긴다
    $ git add -p           //각 변경 사항을 터미널에서 직접 눈으로 하니씩 확인하면서 staging area로 넘기거나 제외시킬 수 있다.
    $ git add [file name]  // 작업 디렉토리내의 특정 파일만 staging area로 넘긴다.

    add( stage에 올리기) 

    > commit하기 전에 저장을 원하는 파일들을 묶는 일

    > untracked -> tracked

    -a : tracked만 adding

     

     

    git add + "tab"

    tab을 누르면 자동완성됩니다.

     

    add 내역 확인

    $ git status

     

    Repository에 commit

    특정 시점에 파일의 변화를 저장하기 ( = save)

    $ git commit -m [메시지]
    $ git commit -am [메시지]  // add와 commit 동시에 실행

    언제든지 commit한 시점으로 되돌아 갈 수 있음.

    현재 작업 내용이 내 컴퓨터에 저장됨.

     

    -a 옵션은 tracked 상태의 파일만 auto adding 해준다. ( untracked 상태 제외)

     

    commit 메시지 변경

    $ git commit --amend -m [commit 메시지]

     

    commit 이력 확인

    $ git log
    $ git log --oneline   //한 줄로 요약

    log화면에서 나가려면 "q" 를 입력하면 됩니다.

     

    여태까지 모든 작업 내역이 기록되어 복원할 수 있습니다.

    $ git reglog

     

    변경 내용 확인

    $ git diff

     

    push

    commit한 이력이 repository로 저장

    현재 폴더를 그대로 업로드 하는 것이 아니라, 지금까지의 이력/버전(commit)을 push하는 것이다.

    $ git push [remote명] [branch명]

    내 컴퓨터에 commit한 파일을 github 사이트에 업로드하는 것

    내 컴퓨터에 프로젝트 파일이 없더라고 어디서든지 github 사이트에서 프로젝트 폴더를 다운받아 작업(수정) 가능

     

    $ git push --set-upstream origin [branch name]

    한 번만 명령어를 사용하고, 앞으로 설정한 branch name으로 원격 저장소에 push합니다.

     

    pull

    원격저장소 변경 사항(이력)을 받아옵니다.

    $ git pull [remote명] [branch명]

    다른 작업 환경이나 위치에서 작업할 때, 혹은 공동 작업에서 타인이 commit해서 이력 변경 등 경우가 있기 때문에 pull을 통해서 가져온 후 작업을 진행하는 것이 좋다.

     

    git graph 단축기 설정

    git config --global alias.l "log --oneline --all --graph"

    alias라는 명령어를 이용해서 별명을 설정합니다.

    git l

    이제 "l"을 입력하면 graph 명령어가 실행됩니다.

     

     

    파일 상태

    M : modify (수정된 파일)

    U : Untracked files (git 에 안올려서, git에서 관리하고 있지 않은 파일)

    .gitignore

    .gitignore 파일을에 무시하고자 하는 파일을 추가합니다.

    파일이 status에 더 이상 나타지 않습니다.

    .gitignore파일이 없다면 새로 생성하면 됩니다.

     

    데이터 베이스 id, pw와 같은 민감한 정보는 git에 올리면 안됩니다.

    그렇기 때문에 .gitignore 파일을 통해 실수라도 commit되지 않도록 관리할 수 있습니다.

    만약 id, pw가 저장된 포맷이 필요하다면 필요하다면

    config.txt.template 파일을 만들어서 아래와 같이 USER_ID, USER_PASSWORD로 적어 놓습니다.

    (파일 이름은 마음대로)

     

     

    Reset

    $ git reset --hard [commit id]

    RESET = HEAD의 Branch를 바꾼다. 

    CHECKOUT = HEAD를 바꾼다. (이전 버전으로 돌아감), HEAD를 옮긴다.

     

     ex) 아래와 같은 상태에서 reset 명령어를 사용하여 v7 에서 v6상태로 옮기고 싶습니다.

    만약 이 상태에서 reset 명령어를 입력한다면 어떻게 될까요?

    $ git reset --hard [v6 commit id]

    v7이 사라지고 v6까지의 작업만 남게 됩니다. 

    실제로는 v7이 사라진 것은 아닙니다. main이 v6를 바라보게 되면서 v7은 삭제한 것과 같은 효과를 얻을 수 있게 됩니다.

    728x90

    댓글

© 2022. code-space ALL RIGHTS RESERVED.