git bash 사용법

박영준·2023년 1월 4일
0

Git

목록 보기
5/16

Ⅰ. git bash 명령어

Directory 이동

1. 홈 디렉토리로 이동

$ cd ~

2. 새 디렉토리에 디렉토리명을 생성

$ mkdir [디렉토리명]

3. [디렉토리명]으로 이동

$ cd [디렉토리명]

4. 부모 디렉토리로 이동

$ cd ..

5. 현재 경로를 출력 // print working directory

$ pwd

6. 디렉토리의 내용을 출력

$ ls

//또는
$ dir

7. 디렉토리의 폴더 상세 정보까지 출력

$ ls -l

8. 디렉토리의 숨김 파일과 디렉토리까지 출력

$ ls -a

7, 8번을 합쳐서, ls -al 처럼도 사용 가능


9. vi 편집기로 [파일명.확장자명] 파일을 작성

$ vim [파일명.확장자명]

10. 파일이 있는 디렉토리를 내용물과 함께 삭제

$ rm -r [디렉토리명]

11. git bash/terminal 창의 내용을 삭제

$ clear

12. git bash/terminal 창을 종료

$ exit

13. 파일 내용 조회

$ cat [파일명]

git 유저 / 업로드 설정

내 컴퓨터와 내 git계정을 연동시키는 작업
(본인 소유의 컴퓨터가 아닌 공용 컴퓨터라면 쓰지 않는게 좋음)

1. 현재 위치에서 지역 저장소를 생성

//이 폴더를 git으로 상태관리하겠다
$ git init

.git 폴더가 생성됨
(이 폴더를 삭제하면, 상태관리 내역이 사라진다 -> 만약, git으로 더이상 관리할 생각이 없다면 삭제하면 된다.)


2. 깃 환경에서 사용자 이름을 [사용자명]으로 지정

$ git config --global user.name "[사용자명]"

global : 컴퓨터 전체에서 사용하겠다는 의미

3. 깃 환경에서 사용자 이메일을 [사용자이메일명]으로 지정

$ git config --global user.email "[사용자이메일명]"

4. 현재 컴퓨터에 연동된 계정 확인

// 소문자 L 이다.
git config --global -l

5. 깃의 상태를 확인

$ git status

마지막 버전과 지금 현재 상태와의 차이를 보여줌

6. 사용자 정보 조회

$ git config --list

commit

1. [파일명.확장자명]을 스테이지에 올림

//모든 수정사항 스테이징
$ git add [파일명.확장자명]

//해당 파일 스테이징
git add [파일이름]

//a.txt에 내가 수정한 것을 다음 버전(커밋)에 반영하겠다
git add a.txt

지금까지 변경한 내용을 다음 버전(커밋)에 반영
비유하자면, add : 내가 문서 작업을 할 때 계속 ctrl+s 누르면서 저장하는 작업

2. 커밋 메시지 [메시지명]을 붙여 커밋

$ git commit -m "[메시지명]"

git commit : 지금까지 add했던 내용을 하나의 버전으로 묶겠다
비유하자면, commit : 그 저장한 파일을 "다른이름으로 저장"하는 작업

3. 메시지 [메시지명]을 붙여서 스테이징과 커밋을 동시에 진행

$ git commit -a -m "[메시지명]"

4. 커밋 내역 확인

$ git log
$ git log --pretty=oneline   // 한줄로 표기하기

지금까지의 커밋 이력을 확인

5. 특정 커밋 내역 확인

$ git show [커밋 id]

6. 최근 버전과 작업 폴더의 수정 파일 사이의 차이를 출력

$ git diff
$ git diff [이전커밋 id] [이후커밋 id]

7. 지정한 커밋 해시로 이동

$ git checkout [커밋 해시]

8. 가장 최근 커밋을 취소

$ git reset HEAD^ 	//현재 HEAD의 이전 커밋으로 되돌리기
$ git reset HEAD~n 		//현재로 부터 n 번째 이전 커밋으로 되돌리기

9. 지정한 커밋 해시로 이동하고 커밋을 취소

$ git reset [커밋 해시]

// 추가! reset의 3가지 옵션
$ git reset --soft [커밋ID]  	//head 만 바뀜
$ git reset --mixed [커밋ID] 	//staging 도 그 때로 바뀜
$ git reset --hard [커밋ID]		//working디렉토리/staging 모두 그 때로 바꿈 

10. 지정한 커밋 해시의 변경 이력을 취소

$ git revert [커밋 해시]

11. 커밋 수정

파일 수정 한 뒤
$ git add .
$ git commit --amend  : 최신 커밋 수정

branch

1. 새로운 브랜치 [브랜치명]을 생성

$ git branch [브랜치명]

2. branch 이름 바꾸기

git branch -m [기존이름] [변경될이름]

3. 브랜치 조회

$ git branch

4. [브랜치명]으로 체크아웃(이동)

$ git checkout [브랜치명]

//브랜치만들고 바로 이동
$ git checkout -b [브랜치명]

5. 브랜치 삭제

$ git branch -d 브랜치명

6. 커밋 로그에서 한 줄에 한 커밋씩 출력

$ git log --oneline

7. 수정한 전체 파일을 스페이지에 올린다.

$ git add .

8. 커밋 로그에 각 브랜치의 커밋을 그래프로 표시

$ git log --branches --graph

9. [브랜치명]을 master 브랜치와 병합

$ git merge [브랜치명]
$ git merge [브랜치명] --edit     // 병합 후 바로 vi 편집기가 나오면서 커밋 메시지 수정 가능
$ git merge [브랜치명] --no-edit   // 커밋 메시지 수정없이 바로 병합

10. merge 취소

$ git merge --abort

11. 병합이 끝난 [브랜치명]을 삭제

$ git branch [브랜치명] -d

git hub 원격 저장소

원격 저장소에 있는 repository와 내 로컬 폴더(내 컴퓨터 내부에 있는 폴더)와 연결시키는 작업

1. 원격 저장소에 연결

$ git remote add origin [github 레포지 주소]
$ git remote add origin [branch 이름]   // 없으면 생성됨

origin은 default처럼 사용하는 이름이고 따로 설정할 수도 있기도 함

2. 원격 저장소에 연결됐는지 확인

$ git remote -v

3. 지역 저장소의 커밋을 맨 처음 원격 저장소에 올리는 경우

$ git push -u origin master

4. (3번을 한 후) 지역 저장소의 커밋을 원격 저장소에 올리는 경우(= 업로드)

$ git push
$ git push origin master

5. 원격 저장소의 커밋을 지역 저장소로 가져옴

$ git pull
$ git pull origin master

6. SSH 키를 생성함

$ ssh-keygen

7. 원격 저장소를 [지역저장소명]에 복제하기

//내 현재 폴더 위치에 원격저장소의 내용이 하나의 폴더가 되어 새로 생성됨 (그러나, 다시 그 폴더 안으로 들어가야 내가 원하는 내용들을 확인 가능)
$ git clone [원격 저장소 주소]

//따로 폴더 하나가 생성되지 않고, 원격저장소의 내용들이 내 현재 위치에 모두 들어옴
$ git clone [원격 저장소 주소] .

// 주의! 첫번째 커밋이 아니라면 풀 먼저하기
$ git remote remove origin

8. 원격 저장소의 커밋을 가져오기만 하고 merge하지 않는다

가져온 branch 내용은 origin/[브랜치] 로 저장됨

$ git fetch

9. 패치로 가져온 정보가 있는 브랜치[FETCH_HEAD]를 master 브랜치에 병합

$ git merge FETCH_HEAD

10. [브랜치명]을 만드는 것과 동시에 체크아웃

$ git checkout -b [브랜치명]

11. 원격 저장소에 [브랜치명]의 브랜치의 커밋을 올린다

$ git push origin [브랜치명]

12. 원격저장소 삭제

$ git remote remove origin

// 이렇게도 사용 가능
git remote rm origin

깃허브 변경사항 되돌리기

1. 모든 변경사항 되돌리기

$ git reset --hard

2. 특정 파일 변경사항만 되돌리기

$ git checkout --[파일명]

Ⅱ. git bash 사용 순서

(예시) 일반적으로 어떤 명령어 순서대로 사용할까?

  1. 올리고자 하는 폴더에서 마우스 우클릭 후 Git Bash Here

  2. git init
    현재 위치에서 지역 저장소를 생성.
    .git 폴더가 생성된다.

  3. git remote add origin [github 레포지 주소]
    로컬 저장소와 원격 저장소를 연결

  4. git remote -v
    원격 저장소에 연결됐는지 확인

  5. git status
    현재 프로젝트가 어떻게 관리되고 있는지 확인.
    로컬 저장소의 현재 상태를 확인.
    깃의 상태를 확인.

    git log
    수정된 변경 사항들을 확인.
    만약 변경 사항이 있다면, git pull origin을 통해 프로젝트를 가장 최신 상태로 만들어두기.

  6. git add .
    작업 공간의 파일들을 준비 영역에 추가
    (git add 입력시 왼쪽과 같이 소스가 추가되지 않는다. git add는 특정 파일만 업로드하고자 할 때 사용)

    만약, warning: LF will be replaced by CRLF in .project. 에러가 발생한다면?

    • 원인: 문서의 개행 문자를 처리하는 OS 차이 때문에 발생하는 것이다.(참고 : 유닉스에서는 한 줄의 끝이 LF(Line Feed)로 이루어지는 반면, 윈도우에서는 줄 하나가 CR(Carriage Return)와 LF(Line Feed)인 CRLF로 이루어진다)
    • 해결법: git config core.autocrlf true 를 입력 후, 다시 add 하기
  7. git commit -m "[메시지명]"
    로컬 저장소에 최종 저장.
    커밋 메시지 [메시지명]을 붙여 커밋.
    커밋할 브랜치에 체크아웃을 해둔 후, 새로운 파일을 해당 브랜치에 커밋.

  8. git push origin master
    로컬 저장소의 파일들을 원격 저장소로 올린다.
    업로드.

    git push origin --all
    여러 브랜치를 한번에 모두 올리고 싶을 경우.

    만약, 처음 push할 때는 로그인 창이 뜬다. 계정 정보를 입력하면 된다.

    에러가 발생한다면?

    • 원인: 원격 저장소와 로컬 저장소의 상태가 달라서 나는 오류일 것임(원격 저장소에는 README.md 파일이 있었기 때문인 것 같다.)
    • 해결법: pull을 먼저 해주어 둘의 상태를 같게 한 다음 push를 해준다.
  9. 깃허브에서 소스가 잘 올라왔는지 확인


< 새프로젝트를 직접 생성하는 경우 >

STEP1. 프로젝트를 생성하는 위치에서 폴더 생성 후 .git 생성 => CLI 명령어 : git init

STEP2. 로컬과 원격 저장소 연결 => CLI 명령어 : git remote add origin (깃헙에서 생성한 레포지토리 주소)

STEP3. 폴더에 무언가 변경(파일이나 리드미나 테스트용 파일) 후 스테이징 => CLI 명령어 : git add .

STEP4. 커밋 메시지 남기기 => CLI 명령어 : git commit -m "메세지"

STEP5. 메인에 푸쉬하기 => CLI 명령어 : git push origin main

이후에 다른 사람들이 포크하거나 레포지토리에 팀원 초대해서 같이 사용


< 다른 사람의 레포지토리 fork 하는 경우 >

STEP1. 레포지토리를 저장할 위치에서 => CLI 명령어 : git init

STEP2. fork한 레포지토리 주소를 복사하여 로컬저장소와 원격저장소(GitHub)연결 => CLI 명령어 : git remote add origin (복사한 주소값)

STEP3. 원격 저장소에 저장된 파일들을 로컬에 땡겨옴 => CLI 명령어 : git pull origin main

STEP4. 나의 작업을 분리하기 위해 새 브랜치 생성 및 적용 => CLI 명령어 : git branch (사용할 이름) / git checkout (생성한 브랜치 이름)
브랜치 생성후, 해당 브랜치로 체크아웃. 체크아웃한 브랜치에서 새로운 브랜치 생성

STEP5. 작업 후 로컬의 git이 변경 사항이 있는지 확인 => CLI 명령어 : git status

STEP6. 로컬에서 변경 및 추가된 파일이 있다면 스테이지에 추가 => CLI 명령어 : git add (파일명) or .(변경 및 추가된 파일 모두)

STEP7. 스테이지에 올라간 파일에 대한 작업 내역 메시지 남기기 => CLI 명령어 : git commit -m "여기에 메세지"

STEP8. 원격 저장소의 브랜치에 저장하기 => CLI 명령어 : git push origin branchname (main으로 할 경우 메인에 저장되고, test로 할경우 test라는 브랜치에 저장됨)

STEP9. GitHub의 Pull requests 메뉴에 들어간 후 내가 작업한 브랜치에서 main 브랜치로(base <- compare) Pull requests하기

STEP10. 레포지토리의 마스터가 내가 올린 PR을 확인 후 코드 병합(Merge) or 충돌이 있을 경우 함께 해결 후 코드 병합

STEP11. 이 과정을 거치면 로컬에서 내가 작업한 파일들이 원격 저장소와 합쳐짐!!!


< 터미널 명령어 >
PWD : 현재 내가 위치하고 있는 주소
CD (대상) : 현재 위치에서 존재하는 폴더를 선택해서 들어감 CD test(test 폴더에 접근)
CD .. : 현재 위치에서 상위 폴더로 이동
LS : 현재 위치에 존재하는 파일 조회
CLEAR : 터미널창 깨끗하게 청소


참고: git 명령어 모음, 총 정리 (gitbash, terminal)
참고: Git Bash #명령어 정리
참고: GitHub 사용법 - Git Bash를 이용한 소스 올리기

profile
개발자로 거듭나기!

0개의 댓글