초기 세팅

git config --global user.name "name"
git config --global user.email "name@mail"

# 새로운 폴더/Project를 만드는 경우
git init

 

작업트리/스테이지/저장소 관리

git status

# File 수정

# 스테이지 등록
git add "file name"

# 저장소 업로드
git commit -m "msg txt"

git log

##################################

# add + commit 동시에
git commit -am "msg txt"

* .gitignore 파일 내에 버전관리에서 제외할 파일 or 디렉토리를 작성하면 버전 관리에서 제외 할 수있음.

 

Git 작업 되돌리기

스테이지에 올라가지 않은 상태에서는 git checkout -- "file name"으로 되돌리 수 있음.

스테이징이(add) 된 경우에는 git reset HEAD "file name" 로 되돌릴 수 있음.

최신 커밋을 되돌리는 방법으로는 git reset HEAD^ 로 수행 가능함.

마지막으로 특정 commit으로 되돌리는 방법으로는 git log에서 기록을 보고 git reset --hard "commit hash"로 되돌릴 수 있음. 하지만 reset을 하면 그 사이의 commit된 version들은 삭제됨. 삭제를 하지 않으려면 revert를 사용면 됨. 

git checkout -- "file name"

git reset HEAD "file name"

git reset HEAD^

git reset --hard "commit hash code"
git revert "commit hash code"

 

Git & Branch

master 브랜치에서 분기로 user마다 새로운 브랜치를 만들어서 사용할 수 있습니다. 그리고 수정된 내용을 master로 다시 병합하여 유지/보수 할 수있음. 브랜치를 만드는 방법으로는 아래 명령어가 있습니다.

git branch    # branch 조회


git branch (branch name A)  # 새 branch 생성 (HEAD -> master, A)


git checkout (branch name)  # 해당 branch로 이동


git checkout master
git merge (branch name)  # A로 하면 A를 master로 merge함 (--no-edit 옵션도 있음)


git brance -d (branch name)  # 해당 branch를 삭제 (완전 삭제는 아님)

같은 파일의 다른 위치를 수정한 경우 병합하면 자동으로 한개의 파일로 합쳐짐. 하지만 같은 파일 내 같은 위치를 수정한 경우에는 CONFLICT 경고가 나오고 충돌이 생긴 file에 표시가 되어있음. 이 부분이 해결되야 merge가 정상적으로 진행이 됨. (P4Merge, Meld 같은 프로그램으로 이런 충돌을 관리할 수 있음)

 

Github

git remote add origin (github link)   # Github에 연동 시작
또는
git clone (github link) (Dir path)


git remote -V    # Github 연결 상태 확인


git push -u origin master   # commit을 한 file을 github에 업로드

###########################################

 # pull 전에 미리보기
git fetch 
git checkout FETCH_HEAD

git diff HEAD origin/master  # 바뀐 내용만 보기

git checkout master
git merge FETCH_HEAD



# origin (원격 저장소)의 내용을 master branch로 가져옴 (pull = fetch + merge FETCH_HEAD)
git pull origin master

매일 시작하기 전에 pull을 하고 시작하는 것이 충돌을 방지하는데 좋음. 그리고 git checkout -b newBranch로 하면 새로운 브랜치를 만들고 체크아웃까지 할 수 있음. 그리고 이 branch를 push 할 때에도 git push origin newBranch로 업로드를 하면 됨. branch를 원격 저장소에 업로드 했으면 merge를 위해서 new pull request를 해야함. 

'Programming > Programming Skills' 카테고리의 다른 글

Unity 게임 디자인 패턴  (1) 2020.03.18

+ Recent posts