Git | 설치 및 사용법 / 명령어

블로그 이사 완료·2022년 10월 13일
0
post-thumbnail

Mac 사용자의 기준에서 작성되었음

📍 Git

깃은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다.

#1. Git 설치/삭제/업데이트

홈브루를 통해 깃과 VScode를 설치한다.

homebrew 설치
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

brew경로 환경변수에 추가
$ echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/PC계정명/.zprofile

$ eval "$(/opt/homebrew/bin/brew shellenv)”

brew cask 설치
$ brew install cask

brew로 VScode 설치 (선택사항)
$ brew install --cask visual-studio-code

homebrew 삭제
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

homebrew 디렉토리 삭제
$ rm -rf homebrew

homebrew 업데이트
$ brew update

#2. Github 연동 및 세팅

깃허브 계정을 연동하고 각족 설정 값을 확인 할 수 있다.

git 버전 확인
$ git —version

GitHub 유저 설정
$ git config --global user.email "Github가입 이메일”

$ git config --global user.name "Github계정명"

유저 설정 확인
$ git config —list

기본 브런치 값 확인
$ git config —global init.defaultBranch

기본 브런치 값 main으로 설정
$ git config —global init.defaultBranch main

깃 설정 확인
$ git config -l

#3. Git 커밋(Push/Pull/Clone)

깃허브에 최초로 커밋 할 때 아래의 순서대로 진행하면 된다.

깃 초기화 (프로젝트 처음에만 할 것)
$ git init

모든 파일 선택 (두번 째 커밋 부터는 모든 변경 된 파일 선택)
$ git add .

git add 취소하기 (파일 상태를 Unstage로 변경하기)
$ git reset HEAD
$ git restore --staged 파일명

staging 파일 확인
$ git status

commit
$ git commit -m "커밋메시지"

커밋 컨벤션 참고

commit 취소하기

# [방법 1] 
# commit을 취소하고 해당 파일들은 staged 상태로 워킹 디렉터리에 보존
$ git reset --soft HEAD^

# [방법 2] 
# commit을 취소하고 해당 파일들은 unstaged 상태로 워킹 디렉터리에 보존
$ git reset HEAD^
$ git reset HEAD~1 # 마지막 commit을 취소. 하나를 되돌림

$ git reset HEAD^^ 
$ git reset HEAD~2 # 마지막 2개의 commit을 취소

# [방법 3] 
# commit을 취소하고 해당 파일들은 unstaged 상태로 워킹 디렉터리에서 삭제
$ git reset --hard HEAD^

–soft : index 보존(add한 상태, staged 상태), 워킹 디렉터리의 파일 보존. 즉 모두 보존.
–mixed : index 취소(add하기 전 상태, unstaged 상태), 워킹 디렉터리의 파일 보존 (기본 옵션)
–hard : index 취소(add하기 전 상태, unstaged 상태), 워킹 디렉터리의 파일 삭제. 즉 모두 취소. 작업내용 다 사라지니까 왠만하면 사용X

commit 메시지 변경하기
$git commit --amend -m "커밋메시지"

브랜치를 main으로 변경
$ git branch -m main

레포지토리 연결
$ git remote add origin https://github.com/JunTaeHahm/레포지토리이름.git

원격저장소(origin)에서 브랜치(main)로 Push(업로드)
$ git push -u origin main

git push 취소하기
이 명령을 사용하면 자신의 local의 내용을 remote에 강제로 덮어쓰기를 하는 것이기 때문에 주의해야 한다.
되돌아간 commit 이후의 모든 commit 정보가 사라지기 때문에 주의해야 한다.
특히, 협업 프로젝트에서는 동기화 문제가 발생할 수 있으므로 팀원과 상의 후 진행하는 것이 좋다.

# 1. 워킹 디렉터리에서 commit 되돌린다.
# 1-1. 최근의 commit을 취소하고 워킹 디렉터리를 되돌리는 법
# 가장 최근의 commit을 취소 (기본 옵션: --mixed)
$ git reset HEAD^

# 1-2. 원하는 시점으로 워킹 디렉터리를 되돌리는 법
# Reflog(브랜치와 HEAD가 지난 몇 달 동안에 가리켰었던 커밋) 목록 확인
$ git reflog #또는
$ git log -g
# 원하는 시점으로 워킹 디렉터리를 되돌린다.
$ git reset HEAD@{number} #또는
$ git reset [commit id]

# 2. 되돌려진 상태에서 다시 commit을 한다.
$ git commit -m "Write commit messages"

# 3. 원격 저장소에 강제로 push 한다.
$ git push origin [branch name] -f
# 또는
$ git push origin +[branch name]
# master branch를 원격 저장소(origin)에 강제로 push
$ git push origin +master

브랜치(main)에서 원격저장소(origin)로 Pull(다운로드)
$ git pull -u origin main

브랜치(main)에서 원격저장소(origin)로 Clone(복제)
$ git clone 레포지토리 주소

git lfs 설치
깃허브는 50MB 이상의 대용량 파일은 업로드가 되지 않는다. 이 때, LFS를 사용해서 대용량파일을 업로드 할 수 있다.
아래 명령어 들은 git add . 이전에 실행 한다.
$ git lfs intall

디렉토리 내의 대용량 파일 추적 및 모든 파일 추적
$ git lfs track ‘*.mp4’ (용량 큰 파일 확장자 기입)

$ git lfs track *

gitattribute 파일 선택
$ git add .gitattributes

모든(변경 된) 파일 선택
$ git add .

레포지토리에 연결되어 있는 캐시 삭제
$ git rm -r --cached .

#4. Git Repository 관련 명령어

레포지토리가 꼬였을 때 자주 썼던 간단한 명령어다.

레포지토리 초기화
$ git remote rm origin

레포지토리 변경
$ git remote set-url origin https://github.com/JunTaeHahm/레포지토리이름.git

레포지토리 확인
$ git remote -v

#5. Git 삭제

#5.1 파일탐색기에서 .git 폴더를 직접 삭제

프로젝트 폴더에서 숨김처리 되어있는 .git 폴더를 직접 삭제한다. 숨김파일을 보는 법은 Command + Shift + . 이다.(Mac 기준)

#5.2 터미널에서 삭제

프로젝트 폴더의 터미널에서 명령어로 삭제 할 수 있다.

해당 폴더에 있는 모든 파일 검색 (.git파일이 있어야함)
$ ls -a

.git 폴더 삭제
$ rm -r -f .git


📍 Git & CLI 명령어

#1. Git 명령어

분류명령어내용 설명
<새로운 저장소 생성>$ git init.git 하위 디렉토리 생성(폴더를 만든 후, 그 안에서 명령 실행 => 새로운 git저장소 생성)
<저장소 복제/다운로드(clone)>$ git clone <https:.. URL>기존 소스 코드 다운로드/복제
$ git clone /로컬/저장소/경로로컬 저장소 복제
$ git clone 사용자명@호스트:/원격/저장소/경로원격 서버 저장소 복제
<추가 및 확정(commit)>$ git add <파일명>$ git add *커밋에 단일 파일의 변경 사항을 포함(인덱스에 추가된 상태)
$ git add -A커밋에 파일의 변경 사항을 한번에 모두 포함
$ git commit -m "커밋 메시지"커밋 생성(실제 변경사항 확정)
$ git status파일 상태 확인
<가지(branch)치기 작업>$ git branch브랜치 목록
$ git branch <브랜치이름>새 브랜치 생성 (local로 만듦)
$ git checkout -b <브랜치이름>브랜치 생성 & 이동
$ git checkout mastermaster branch로 되돌아 옴
$ git branch -d <브랜치이름>브랜치 삭제
$ git push origin <브랜치이름>만든 브랜치를 원격 서버에 전송
$ git push -u < remote > <브랜치이름>새 브랜치를 원격 저장소로 push
$ git pull < remote > <브랜치이름>원격에 저장된 git 프로젝트의 현재 상태를 다운받고 + 현재 위치한 브랜치로 병합
<변경 사항 발행(push)>$ git push origin master변경사항 원격 서버에 업로드
$ git push < remote > <브랜치이름>커밋을 원격 서버에 업로드
$ git push -u < remote > <브랜치이름>커밋을 원격 서버에 업로드
$ git remote add origin <등록된 원격 서버 주소>클라우드 주소 등록 및 발행(git에게 새로운 원격 서버 주소 알림)
$ git remote remove <등록된 클라우드 주소>클라우드 주소 삭제
<갱신 및 병합(merge)>$ git pull원격 저장소의 변경 내용이 현재 디렉토리에 가져와지고(fetch) 병합(merge)됨
$ git merge <다른 브랜치이름>현재 브랜치에 다른 브랜치의 수정사항 병합
$ git add <파일명>각 파일을 병합할 수 있음
$ git diff <브랜치이름><다른 브랜치이름>변경 내용 merge 전에 바뀐 내용을 비교할 수 있음
<태그tag 작업>$ git log현재 위치한 브랜치 커밋 내용 확인 및 식별자 부여됨
<로컬 변경사항 return 작업>$ git checkout -- <파일명>로컬의 변경 사항을 변경 전으로 되돌림
$ git fetch origin원격에 저장된 git프로젝트의 현 상태를 다운로드

#2. CLI (Command Line Interface) 명령어

명령어 인터페이스는 (마우스나 각종 UI 컴포넌트 대신) 터미널을 통해 사용자와 컴퓨터가 상호 작용하는 방식이다.

분류명령어의미설명
<관리자 권한으로 실행>$ sudo(super user do)1. 관리자만 읽을 수 있는 파일 읽기2. 새로운 프로그램 설치 (Ubuntu Linux)3. Notes : 새로운 프로그램 설치시 Package Manager를 이용하는 것이 보편적
<기본적인 unix/linux 명령어>$ ls(list)파일보기
$ al(all)파일의 세부내용 확인
< $ ls -al의 상세 내용 (권한) >1. 접근권한 (읽기/쓰기/실행 가능)여부2. 링크된 파일 갯수3. 소유자4. 소유 그룹5. 파일 크기6. 만든 날짜7. 만든 시간8. 파일/디렉토리 이름
$ cd(change directory)디렉토리로 이동
$ pwd(print working directory)full 디렉토리 path 확인 /(디렉토리 위치 변경)
<디렉토리로 이동>$ cd ~홈 디렉토리 (현재 사용자 개인 파일 디렉토리)
$ cd /루트 디렉토리 (시스템 최상위 디렉토리 확인) /(매우 중요한 디렉토리를 의미하며 관리자 권한 요구함)
$ cd .현재 디렉토리
$ cd ..부모 디렉토리
$ pwd현재 full 디렉토리 확인
$ clear터미널의 입력 내용들을 지워줌
<자주쓰는 명령어>$ touch [file_name]빈 파일 생성 / (not 디렉토리 / literally 파일을 생성)
$ mkdir [dir_name](make directory)디렉토리 생성
$ cat [file_name](concatenate)텍스트 형태의 파일 확인
$ mv [file_name or dic_name][target_dir_name](move)파일 또는 디렉토리 옮기기
$ mv [file_name or dir_name][new_file_name]파일 및 디렉토리 이름 바꾸기
$ cp [file][target_dir_name](copy)복사
$ cp -r [folder_name]복사
<삭제>(주의! 휴지통을 거치지 않고 즉시 삭제)$ rm [file_name](remove)파일 삭제
$ rm -r [dir_name]폴더 삭제
<파일 소유권 변경>$ chown [owner_file]:[group_file](change owner)파일 소유권 변경
$ mkdir디렉토리 생성
$ rm삭제
<GUI프로그램의 실행을 더 간편하게>$ explorer .현재 폴더를 windows파일 관리자에서 보기
$ open .현재 폴더를 macOS finder에서 보기
$ code .현재 폴더를 VS Code 에디터로 열기
<파일 이름에 따른 팁>공백이 있는 경우공백부분에 tab 키를 누르기 or / (역슬래시)를 입력
파일 자동완성 기능첫글자 등을 쓰고 tab 키 누르기

출처

profile
https://kyledev.tistory.com/

0개의 댓글