Git CMD

Git은 작업시에 프로젝트를 관리하기 편한 오픈소스 입니다
GitCommand Line(명령어/CMD)은 IDE의 terminal에서 이용할 수도있으며 git bash를 이용 입력이 가능합니다
Git에 대한 기초적인 내용은 아래 문서를 참조 바랍니다
Git Reference : https://git-scm.com/book/ko/v2

Git Command Line(CMD)

git cmd를 실행하는 메인 화면입니다. git 프로젝트를 관리할 폴더에 우클릭 후 Git Bash를 클릭합니다.(Git이 로컬에 깔려있어야 가능합니다.)
Git Download : https://git-scm.com/downloads

Git

Git init

git init

Git을 시작하기 위한 환경을 구성합니다
Git int명령어를 내린 폴더에 .git 이라는 폴더가 생성되며 git을 시작할 준비를 마쳤습니다

폴더의 git연결을 해제하려면 .git폴더를 통째로 삭제시 git연결이 해제됩니다

Git branch

git branch

Git의 브랜치 리스트를 보여줍니다. 현재 선택된 브랜치는 초록색으로 나오게 됩니다.

git branch {B}

git branch -m {B}

git branch -d {B}

{B}에 새로 생성할 브랜치 명을 입력하면 branch가 생성됩니다.

-m : 현재 브랜치의 브랜치명을 {B}으로 변경합니다

-d : {B} 브랜치를 삭제합니다

Git add

git add *

Working directory에 수정된 내용을 staging상태(커밋으로 저장소에 기록할)로 변경합니다

Git checkout

git checkout {B}

git checkout -b {B}

다른 브랜치로 이동 할 경우에 {B}에 이동할 브랜치 명을 입력 하면 {B}브랜치로 이동합니다

-b : 다른 브랜치를 생성하고, 생성한 브랜치로 이동할 경우에 checkout뒤에 -b를 입력 하면 {B}브랜치 생성과 동시에 checkout됩니다

Git commit

git commit

git commit -m {M}

Working directory에 수정된 내용을 Commit합니다. (commit시 별도의 메시지를 기록하지 않습니다)

-m : Commit시 {M}메시지를 남겨서 커밋내용을 기록합니다

Git pull

git pull

현재분기의 최신 데이터를 받아옵니다

Git merge

git merge {B}

현재 브랜치를 기준으로 {B}브랜치와 병합합니다

Git push

git push

현재 브랜치를 Github Repository에 push합니다
(병합돼서 수정된 내용이 있을 경우 수정된 내용이 Github Repository에 올라가게됩니다)

Git stash

Git은 수정사항이 있을 경우 master -> branch로 이동이 가능하지만 branch -> master로의 이동은 불가능 하며, Commit을 해서 Working directory를 비워야만 이동이 가능합니다
브랜치 이동을 위해 Commit을 하면 Log가 남기때문에 하나의 작업을 함에도 불구하고 지나치게 커밋 기록이 많이남게 됩니다.
이러한 문제를 해결하고자 stash에 임시저장을 해놓고 Working directory를 비우기 때문에 다른 브랜치에 왔다갔다 할 수 있습니다
stash는 Stack구조(Ex. 프링글스 통)이기 때문에 apply할 경우 가장 최근 stash부터 불러옵니다

git stash list

저장된 stash 목록을 불러옵니다

git stash save {Name}

{Name}을 stash명으로 하여 저장합니다

git stash apply

가장 최근에 저장된 stash를 불러옵니다

git stash apply stash@{1}

git stash apply {HashCode}

1의 위치에 있는 stash를 불러옵니다
(0 ~ N 까지의 stash를 불러올 수있습니다)

stash를 삭제할 경우 HashCode가 표시되는데 잘못 삭제한 경우 HashCode를 apply해서 삭제한 stash를 다시 apply할 수 있습니다

git stash drop stash@{1}

1의 위치에 있는 stash를 삭제합니다
(0 ~ N 까지의 stash를 삭제할 수있습니다)

git stash show stash@{1}

1의 위치에 있는 stash 변경정보를 보여줍니다
(0 ~ N 까지의 stash의 변경정보를 볼 수 있습니다)

git stash clear

저장된 stash 목록을 전부 삭제합니다

rm -f .git/refs/stash

stash 커맨드를 쳤을때 warning : ignoring broken name refs/stash와 같은 에러가 나는 경우가 가끔 있는데 워킹 디렉터리에 수십개의 파일을 작업중일 경우 난감해집니다 이럴 경우 작업폴더의 .git에 있는 .git\logs\refs\stash 파일을 메모장을 이용하여 열어서 저장된 stash정보를 따로 메모장에 써놓습니다 (파일에 저장된 stash의 hashcode값이 적혀있습니다)
그리고 나서 위의 커맨드를 날려서 stash를 초기화 합니다
따로저장된 stash의 hashcode값을 apply하여 작업을진행하거나 다시 stash save하여 저장할 수 있습니다

Git reset

git reset --hard

Staging되지 않은 Working directory의 파일들을 모두 변경취소합니다

git reset --soft head^
git reset --mixed head^
git reset --hard head^

git reset --soft {Commit ID}
git reset --mixed {Commit ID}
git reset --hard {Commit ID}

Commit한 파일들을 취소 후 Staging에 담습니다 (Commit ID로 reset할 경우 해당 Commit ID 지점까지 reset)
– soft : index보존, 워킹디렉터리 파일 보존
– mixed : index취소, 워킹디렉터리 파일 보존
– hard : index취소, 워킹디렉터리 파일 변경취소

git reset head

Staging처리된 파일들을 Unstaging처리 합니다

git reset head~N

마지막 N(숫자)개의 Commit을 취소/커밋로그삭제 처리합니다

Git reflog

git reflog

gif의 헤더에 어떤 작업(명령어)이 이루어졌는지 알 수 있습니다. 커밋 삭제기록도 볼 수 있습니다 / 끄기버튼 : Q

Git rog

git log

git의 커밋 기록을 볼 수 있습니다 / 끄기버튼 : Q

Git Cherry pick

git cherry-pick {Hash} {Hash} {Hash} ....

현재 브랜치에 특정 커밋만 받아 옵니다. 1~n 개를 cherry-pick하는 것이 가능합니다
git log나 reflog에 있는 hashcode를 {Hash}에 추가해서 사용할 수 있습니다