GitBash를 이용한 Git

남규이·2021년 12월 21일
0

공부 하는 Q_E

목록 보기
2/5
post-thumbnail

📌 Windows 컴퓨터에 Git 설치하기


  • 설치 중 추가 설치로그램 ✅체크는 그대로 계속 진행한다.

  • Git을 사용할 기본 에디터 선택은 기본인 Vim을 선택한다.

  • 새 Repository를 생성할 때 Git branch 이름을 지정하는 방법은 기본("master") 그대로 선택한다.

  • Git 커맨드를 사용하기 위한 환경변수를 설정한다.

  • SSH 기본 실행 도구를 선택하고 "Next" 해준다.

  • HTTP 연결 옵션을 OpenSSL 라이브러리를 선택하고 "Next" 해준다.

  • Git 저장소에 체크인/아웃할 때의 줄 바꿈 방법을 선택하고 "Next" 해준다.

  • Git Bash 터미널 에뮬레이터를 선택하고 "Next" 해준다.

  • Git pull 명령어에 수행될 동작을 기본으로 선택하고 "Next" 해준다.

  • 자격 증명 도우미 사용을 선택하고 "Next" 해준다.

  • 기타 옵션은 기본으로 선택하고 "Next" 해준다.

  • 실험적 기능 사용여부는 어떤것도 선택하지않고 "Next" 해준다.
     ↪개발중인 기능으로 익숙하지않다면 선택하지않는것을 권장!

<참고>
iseunghan tistory_Git 3가지 영역
taetwow tistory_Git 설치하기(2.3.3.1 이상, 상세한 설치법)
lktprogrammer tistory_Git의 기본 개념 및 용어 정리
parkjh7764 tistory_Git Bash란 무엇인가, 설치방법

📌 로컬에서 Git 사용하기


-. 커맨드 라인(Command Line)은 Git 명령어를 입력할때 사용하는 컴퓨터 프로그램으로, 마우스를 사용하는 것이 아닌 프롬프트로 알려진 텍스트 기반 명령어를 입력한다. Git에서는 Git Bash를 의미하는거 같다.

-. 스테이지(Staging Area)는 로컬저장소로 저장되기 전(commit 전) 거쳐야하는 공간으로, add 명령어를 사용하며, 준비 영역을 의미한다.

-. 커밋(Commit)은 파일 및 폴더의 추가/변경 사항들에 대해 기록 하는 것으로, 최근 시간 순으로 저장되며 과거 변경 이력이나 내용을 확인 할 수 있다. "하나의 의미있는 변화, 하나의 버전, Git이 저장한 하나의 기록"으로 생각할 수 있다.

-. 브랜치(Branch)는 현 시점에서 여러갈래의 미래로 분기하는 것, 말 그대로 하나의 프로젝트 원본은 그대로 두고 현 시점까지의 동일한 프로젝트를 하나더 만든다. 기본 브랜치는 "master"이고, Git 저장소를 초기화할때 자동으로 생성하고 'HEAD'라는 특수한 포인터는 지금 작업중인 브랜치를 가르킨다. 작업중인 브랜치에서 checkout 명령어를 사용해 특정 브랜치로 이동하여 작업할수있다.

-. 머지(Merge)는 다른 브랜치에서 작업해놓은것을 현 브랜치에 가져오는것으로, 여러 브랜치로 작업 후, 현 브랜치에 특정 브랜치를 덮을수 있다. 하지만, 머지(Merge)는 동일한 파일의 동일한 부분을 수정시 충돌이 발생하므로 충돌 발생한 부분중 택일하여 재커밋해야한다.


💡 Commit할 때, 3가지 영역 + 1가지 별개 영역

   Working Directory : 내가 작업하고 있는 프로젝트의 디렉토리
   Staging Area : 커밋을 위해 파일을 선택하는 준비영역
   Repository : 커밋들이 모여있는 저장소

   Stash : 위 영역과 별개의 임시 영역으로, 임시적으로 작업사항을 저장하고 나중에
             꺼내서 사용

💡 파일 상태 2가지

   Untracked 상태 : 단어 의미대로 '추적되지 않는' 파일로, 파일 생성후 한번도 add하지
                           않은 상태
   tracked 상태 : 파일이 Git에 의해 그 변동사항이 추적되는 상태로, 특성에 따라
                      4가지로 나뉜다.

💡 Tracked상태일 때, File의 4가지 상태

   Untracked : Working Directory에 있는 파일이지만 Git으로 버전관리 전 상태
   Unmodified : 신규 파일이 추가되었을때, new file 상태 (git add 상태)
   Modified : 파일이 추가된 이후 해당 파일이 수정되었을 때의 상태
   staged : Staging Area에 반영된 상태

<참고>
hyeja.log velog_Git, GitHub 개념정리
iseunghan tistory_Git 3가지 영역
goddaehee tistory_Git 저장소 만들기

로컬에서 Git을 사용하는 방법 2가지

  1. Git Bash_ https://git-scm.com/
  2. SourceTree_ https://www.sourcetreeapp.com/

📢 Git Bash를 왜 사용할까?

Git Bash는 cmd창과 같은 역할을 한다.
하지만 운영체제(OS)마다 명령어가 다른데, Git Bash를 설치하면 우리가 사용하는 운영체제인 윈도우(Windows) 운영체제(OS)환경에서도 리눅스 커맨드를 사용할수 있게된다.


1. 로컬에서 Git Bash로 Git 사용하기


  • Git Bash창을 띄워준다.

🔍 기본 명령어

$ pwd // 현재 폴더확인
$ ls -a // -a옵션으로 현재 폴더의 숨김 파일까지 파일 목록 확인
$ cd 폴더명 // 해당 위치 디렉토리로 이동
$ mkdir 폴더명 // 현재 폴더 안에 새로운 폴더 생성
$ touch 파일명 // 현재 폴더 안에 새로운 파일 생성
$ rm -f 파일명.확장자 // 해당 파일 강제 삭제
$ rm -rf 폴더명 // 해당 폴더 삭제
$ echo "출력하고 싶은 문장" // " "안에 문장을 출력

🔍 Git 관련 명령어 (원격 저장소없이 자주 사용하는 기본명령어 ✔)

$ git // Git 명령어 대한 사용법
$ git --version // Git version확인
✔ $ git c:폴더명 //로컬C드라이브에 있는 해당 폴더로 이동
✔ $ git init // 현재 디렉토리를 로컬 저장소로 설정 (git으로 저장소 선언) 
✔ $ git status // 디렉토리 상태 확인
✔ $ git config --global user.name 이름 // Git저장소로 활용하기전 환경설정_사용자 이름 셋팅
✔ $ git config --global user.email 이메일 // Git저장소로 활용하기전 환경설정_사용자 이메일 셋팅
✔ $ git --list // git 사용자 이름과 이메일 확인
✔ $ git add 파일.확장자 // 원하는 파일 스테이지에 추가 (커밋할 파일을 선택하는 것)
✔ $ git add -A // 모든 파일을 스테이지에 추가

✔ $ git commit // 스테이지에 있는 파일들을 로컬 저장소에 저장 (프로젝트 중 하나의 버전/지점 생성)
✔ $ git commit -m "커밋 메시지 작성" //커밋메시지 입력후 커밋
✔ $ git log // 커밋 이력 상세조회
$ git log -p // 각 commit의 diff 결과를 줄단위로 출력
✔$ git log —oneline —decorate —graph —all // 커밋이력을 상세하게 그래프로 표현
$ git diff // commit된 파일상태와 현재 수정중인 상태 비교

✔ $ git branch // 로컬에서의 브랜치목록 보기 (현재 작업중인 브랜치는 앞에 *붙음)
$ git -a branch // 로컬과 원격에서의 브랜치목록 모두 보기 (현재 작업중인 브랜치는 앞에 *붙음)
✔ $ git branch 브랜치명 // 브랜치 생성 (단, master 브랜치에서 1번이상 commit필수)
✔ $ git checkout 브랜치명 // 생성된 브랜치로 이동해서 작업실행
✔ $ git checkout -b 브랜치명 // 생성된 브랜치에서 바로 이동하여 작업실행
✔ $ git merge 브랜치명 // master 브랜치에 병합하고자 하는 다른 브랜치를 병합
✔ $ git branch merge 브랜치명 // 현재 checkout된 브랜치로 명령어에 입력한 브랜치를 병합
✔ $ git branch -d 브랜치명 // 브랜치 삭제하기 
$ git config --global init.defaultBranch 새 브랜치명 // 기본 브랜치명인 master을 새롭게 변경

$ git remote // 원격저장소 목록 확인
$ git remote add 원격 저장소명 저장소URL // 입력한 URL의 원격저장소를 입력한 원격저장소명으로 추가

$ git push 원격저장소명 브랜치명// 새로 생성한 커밋들을 원격 저장소에 업로드 (로컬저장소 -> 원격저장소)
$ git push -u 원격 저장소명 브랜치명 // u옵션으로 한번 등록한 후 git push만 입력해도 업로드 가능

$ git pull 원격 저장소명 브랜치명// 로컬 저장소로 파일 다운로드하며, 자동 병합(merge) 수행 (원격저장소 -> 로컬저장소)
                                 자동으로 병합이 되기 때문에 무엇이 추가되고 병합되었는지 확인이 안 됨
                                 코드를 업데이트했거나, 아니면 Github를 통해서 commit했을 때 그 내용을 내려받는 명령어
$ git fetch 원격 저장소명 브랜치명 // 로컬 저장소로 파일 다운로드하며, 수동 병합(merge) 수행, 로컬에 영향X (원격저장소 -> 로컬저장소)
                                   다른 사람이 수정한 부분을 확인가능

$ git fork // 남(다른)의 원격 저장소를 다른 원격 저장소로 복사
$ git clone 저장소URL // URL의 원격저장소를 복사하여 내 로컬저장소에 복사 (remote add 명령어 필요없음)
                        git pull과 비슷하지만 클라이언트 상에 아무것도 없을 때 내려받는 명령어

✔ $ git stash // 작업 중 커밋 전에 변경사항을 모두 stash에 보관하는것, stash 스택에 잠시 저장했다가 꺼내 사용 
               즉, 개발 중에 merge/rebase를 해야할 경우 reset/commit하기에 구현이 되지않았을때 사용
✔ $ git stash list// stash 명령어를 통해 저장한 stash 목록 확인
$ git stash apply 스태쉬ID(ex.stash@{0}) // list로 확인한 목록 중 원하는 작업 다시 가져옴
$ git stash drop 스태쉬ID(ex.stash@{0}) // list로 확인한 목록 중 원하는 작업 삭제
$ git stash clear // list에 있는 stash목록 모두 지우기
$ git stash branch 새로만들 브런치명 스태쉬ID //  stash내용으로 브런치가 생성되고 생성된 브런치로 checkout되며 stash는 삭제
$ git stash save 메시지 // stash를 많이 한 상황에서 list로 목록을 봐도 구분이 되지않을때 커밋메시지처럼 메시지와 함께 저장하기

✔ $ git checkout 커밋ID(6자리숫자) // git log 명령어로 **이동하고싶은 커밋시점**을 확인하고 사용
                                    git revert와 비슷하게 이전 이후의 커밋내역은 그대로 유지되고, 커밋시점만 이동시킬수있음

✔ $ git reset 커밋ID(6자리숫자) --hard // git log 명령어로 **돌아가고싶은 커밋시점**을 확인하고 사용
                                        특정 커밋으로 되돌아가는데 되돌린 버전 이후는 히스토리에서 삭제

✔ $ git revert 커밋ID(6자리숫자) // git log 명령어로 **되돌릴 커밋시점**을 확인하고 사용
                                  모든 commit을 유지하고 reset과 달리 이전으로 돌아가는 것이 아닌 되돌릴 시점을 
                                  현재 커밋 앞으로 가져와 버전을 유지하면서 되돌린 버전의 commit을 만들어 준다.

<참고>
coding-groot tistory_Git을 사용하기 위해 알아야할 용어 및 개념들
pleasurehwang tistory_Github 기본개념
coding-groot tistory_Git Bash 간략 사용기
dev-yakuza posstree_git branch와 git merge
zerocho_Github 사용하기, remote, clone, push, pull
🎥유튜브 생활코딩_Reset & Revert 5.1. revert 이론
🎥유튜브 얄팍한 코딩사전_가장 쉬운 Git 강좌 - (상) 혼자작업편

profile
기록하는 습관

0개의 댓글