Git 명령어들 정리
Project/Git

Git 명령어들 정리

목차 (클릭시 해당 목차로 이동)


     

     

     

    기본 명령어

    git init .

    이 폴더를 git을 사용할 폴더로 만든다.

    . : 현재 폴더

     

    그러면 .git 폴더가 생성된다. 이곳에 버전정보들이 적혀있다.

     

    git status

    현재 상태를 볼 수 있는 명령어.

    어떤 파일이 생성되었는지 (working space) : untracked

    어떤 파일이 add 되었는지 (staging area) : committed

    어떤 파일이 수정되었는지 (staging area) : modifed

    로 표시된다.

     

     

    git add {}

    working tree에 있는 파일,디렉토리 중 {}안에 있는 것들을 staging area로 옮긴다.

    • git add . : 현재 디렉토리
    • git add 파일 : 해당 파일
    • git add 파일 파일 파일 : 여러파일도 가능
    • git add 디렉토리 : 디렉토리도 가능

    만약

    warning: LF will be replaced by CRLF in welcome.The file will have its original line endings in your working directory

    오류 발생시에는 아래 링크 참고

    2021.04.21 - [Web/팁] - warning: CRLF will be replaced by LF in gradlew.bat. 문제해결방법

     

    warning: CRLF will be replaced by LF in gradlew.bat. 문제해결방법

    git add . 시 warning: CRLF will be replaced by LF in gradlew.bat. 문제가 발생한다. 이것은 git에서 발생하는 Whitespace 에러이다. 유닉스시스템에서는 한줄의 끝이 LF 로 이루어지지만, 윈도우에서는 CR,LF..

    ksabs.tistory.com

     

     

     

    git commit -m "commit message"

    현재 staging area에 있는 것들을 repository로 옮긴다.

     

     

    git commit --amend

    직전에 커밋한 메세지를 수정할 수 있다.

     

     

    git commit -am "commit message"

    1. git add .
    2. git commit -m "commit message"

    차례로 실행

    대신에 한번도 add되지 않은 파일은 실행되지 않는다.

     

     

     

    git tag -a {태그명} -m "{태그 메세지}"

    annotation 태그를 달 수 있다.

     

     

     

     

     

    git push origin {올릴 태그 명}

    원격 저장소에 태그를 올릴 수 있다.

     

     

     

     

    git tag -d {삭제할 태그 명}

    잘못만든 태그를 삭제할 수 있다.

     

     

     

     

    git push origin :{삭제할 태그 명}

    원격저장소에 올라간 태그를 삭제할 수 있다.

     

     

     

     

    git log

    지금까지의 버전들을 볼 수 있다.

     

     

    git log --stat

    지금까지의 버전들에서 어떤 파일들이 수정되었는지 볼 수 있다.

     

     

    git log -p

    지금까지의 버전들에서 어떤 파일들이 어떻게 수정되었는지 볼 수 있다.

     

    git log --all --graph --oneline

    모든 log의 정보를 그래프로, 한줄로 간략하게 볼 수 있다.

     

     

    git diff

    현재 어떤 파일이 수정되었는지, 어떻게 수정되었는지 볼 수 있다.

     

     

    git branch

    현재 브랜치의 목록들을 볼 수 있다.

     

     

    git branch {원하는 브랜치의 이름}

    현재 커밋 시점에서 브랜치를 생성한다.

     

     

    git checkout {commit id or branch}

    head가 가리키고 있는 곳 (브랜치) 을 옮길 수 있다.

    과거 버전의 commit id를 넣으면(git checkout f1caaff7bda970c79806d30e6281172310742f2f)

    그 버전으로 폴더의 파일들이 싹 바뀌고,

     

    원래 쓰던 브랜치를 넣으면 (git checkout master)

    그 버전으로 폴더의 파일들이 바뀐다.

     

     

     

    git checkout -t origin/{원하는 브랜치의 이름}

    원하는 remote 브랜치를 가져올 수 있다.

     

     

    git merge

     

     

     

    git reset --hard {commit id} 

    해당 commit id 의 버전으로 reset 하겠다. (해당 버전 이후는 다 삭제하고 그 버전으로 돌아가버림)

    현재 브랜치는 해당 commit id의 버전을 가리킨다.

     

     

    git revert {commit id}

    해당 commit id의 버전을 revert 한다. = 해당 commit id로 변경될 때의 변경사항을 되돌린 새로운 버전을 추가한다.

     

    해당 commit id로 변경될 때의 변경사항을 되돌린 새로운 버전 이기 때문에 가장 마지막 commit id 에 대해서만 revert 할 수 있다.

     

    예전의 commit으로 revert 하기 위해서는 역순으로 마지막 커밋들을 revert하며 되돌아가야 한다.

     

     

     

    git remote add {저장소별명 (보통은 origin)} {저장소 주소}

    해당 원격 저장소 주소로 해당 지역 저장소를 연결한다.

     

     

     

    git remote remove origin

    기존의 원격 저장소를 제거한다.

     

     

     

    git push origin {orgin에 생성할 브랜치 명}

    remote repository에 {}에 적은 브랜치를 생성한다.

     

     

     

     

    git branch --set-upstream-to {origin/~~}

    현재 local 브랜치와 {}에 적은 remote의 브랜치를 연결시킨다.

     

     

     

    git branch --delete {삭제할 브랜치}

    {}에 적은 브랜치를 삭제한다.

    삭제할때는 삭제할 브랜치의 부모 브랜치로 checkout 한 뒤 삭제해야한다.

     

     

     

    git branch -D {삭제할 브랜치}

    작업된 사항이 남아있을 때는 브랜치가 삭제되지 않을 수 있다.

    -D 를 입력하면 강제로 삭제할 수 있다.

     

     

     

     

    git push origin :{origin에서 삭제할 브랜치}

    remote 브랜치를 삭제할 수 있다.

     

     

     

     

    git push -u {지정한 저장소별명} {push할 브랜치}

    -u {지정한 저장소별명} {push할 브랜치} 는 지역저장소에서 맨 처음 push를 할때 쳐야하는 명령어이다.

    -u 후 저장소이름과, 브랜치를 지정하면,

    앞으로 git push 만 쳐도 지정했던 저장소명과 브랜치로 push가 된다.

     

     

    git clone {저장소 주소}

    맨 처음 다른 컴퓨터에서 이미 있던 저장소를 가져올때 사용하는 명령어이다.

    그래서 맨 처음 저장소를 만들때 쓰는 명령어는

    • git init .
    • git clone {저장소주소}

    이 두가지 이다.

     

     

     

    git pull

    이미 연결된 저장소에서 가져올 때 사용하는 명령어이다.

     

     

     

     

    협업하기 (github)

     

    github

    github settings 의 Manage accsess 에서 프로젝트를 진행할 사람 초대하기

     

     

     

     

    두 곳에서 push -> rejected

    두 곳에서 같은 파일을 수정하고 push를 하면 나중에 push한 곳에서는 reject가 난다. 

     

    그래서 항상 먼저 git pull 을 통해 수정사항이 없는지 확인하고,

    만약 같은 파일을 수정했으면 자동으로 merge complict가 발생한다. 여기서 수정사항을 알맞게 수정하고

    1. git add {해당파일}
    2. git commit
    3. git push

    를 해주면 된다.

     

     

     

     

    협업하기

    1. 작업전 git pull
    2. 작업
    3. add, commit
    4. push

     

     

    pull 대신 fetch 이용

     

    신중하게 git 의 데이터를 일단 가져오고 싶을때 사용한다.

    git pull 은 origin의 브랜치로 지역의 브랜치까지 바꿔버리는데,

    git fetch를 하면 현재 지역저장소의 헤드가 가리키는 브랜치를 유지하고,

    원격 저장소의 헤드가 가리키는 origin/master 브랜치를 따로 가져온다.

     

    왼쪽은 pull로 가져왔고 오른쪽은 fetch로 가져왔다.

    왼쪽은 HEAD (지역 저장소), origin/master 가 가리키는 브랜치가 같다.

    오른쪽은 HEAD (지역 저장소), origin/master 가 가리키는 브랜치가 다르다.

     

     

     

     

     

    cli로 git 사용할때 맨 처음 해야할 순서

    1. git init .
    2. git add .
      crlf 오류시 git config --global core.autocrlf true input
    3. git commit -m "inital commit"
    4. git remote add origin https://www.github.com/dongho108/~~
    5. git push -u origin master
    6. git branch --set-upstream-to origin/master
    7. git push

     

     

     

     

    local, remote 둘 다 사용할 브랜치 생성하기 (develop)

    1. git branch develop
    2. git push origin develop
    3. git checkout develop
    4. git branch --set-upstream-to origin/develop

     

     

     

     

     

     

    공부 키워드

    tag -> commit id  말고 태그달기

    git flow, git workflow -> 프로젝트시 git 브랜치를 어떤식으로 구성할지

    cherrypick -> 과거의 다른 브랜치의 수정사항을 가져와 merge 하기

    rebase -> timeline을 훨씬 깔끔하게 할 수 있다.

    ssh -> 원격저장소간 통신시 자동으로 로그인

    깃호스팅 사이트의 기능 이슈트래커

    gerrit -> 팀원끼리 코드업데이트 투표