Git 사용하기

혜진 조·2022년 4월 24일

목록 보기
1/5

본 포스팅은 얄코의 "제대로 파는 Git & GitHub" 영상을 보고 정리한 내용입니다. https://www.youtube.com/watch?v=1I3hMwQU6GU

Git (버전관리/협업 시스템)

깃 사용 법

-git 다운로드
-소스트리(원하는 git GUI tool ) 다운로드
-vscode git terminal 기본값 git bash로 설정
: Select Default Profile -> git bash 선택
-터미널 단축기(Ctrl +`)
-git config --global user.name "(본인 이름)"
-git config --global user.email "(본인 이메일)"
-git config --global init.defaultBranch main :기본 브랜치 이름을 master->main으로 변경. gitHub과 맞추기
-git init : 해당 폴더 깃 관리 시작! (폴더에 숨김모드로 .git 폴더 생성 확인)
-.gitignore: 깃에서 관리하지 말아야 할 파일 정리(민감정보, 자동생성 또는 다운로드되는 파일들)

*Untracked files: 아직 깃이 관리하지 않는 파일들

commit 후 vim 입력모드 진입 시
입력 시작: "i"
입력 종료: esc
vim 창에서 빠져나오기(저장없이 종료) ":q"
vim 창에서 빠져나오기(저장없이 강제 종료) ":q!"
*vim 창에서 빠져나오기(저장하고 종료)":wq"

Git 명령어 정리

  1. git status : 현재 폴더 상황 조회

  2. git add 파일명 : 프로젝트의 변경사항들을 타임캡슐(버전)에 담기 (소스트리에서 "스테이지에 올리기"와 동일)
    git add . : 모든 파일 담기

  3. git commit -m "Replace Lions with Leopards"

  4. git log : Git 커밋 history 조회
    -위아래 방향키로 git 명령어 히스토리 를 볼 수 있다.

  5. git commit -am "메세지" : add + commit + 메세지를 한 번에 (새로 추가된(untracked) 파일이 없을 때 한정)

  6. git commit --amend : 가장 최근의 commit 메세지 수정
    ※아직 로컬에서 commit 을 하고 push 는 하지 않아 remote 에 올라가지 않은 상태일 경우※
    git commit --amend 를 사용하고 커밋을 수정할 수 있는 창이 뜨면,
    수정을 완료한 후 esc -> :wq(저장 + 창 닫기) 를 해주면 된다.

  7. git diff : 작업 파일의 어떤 부분이 수정되었는지 조회 ( j: 아래로 스크롤, k: 위로 스크롤, :q : 끄기)
    git diff 시 한글내용 깨져서 나오는 경우: set LC_ALL=ko_KR.UTF-8 입력
    -새로운 파일을 추가하여 untracked files가 있는 경우, git add . => git commit -m "메세지"
    -기존 파일 수정하여 untracked files가 없는 경우, git commit -am "메세지"

  8. git rm 파일명 : 삭제하기 (remove)

  9. git restore 파일명: 작업한 내용 (첫 커밋 상태로) 되돌리기

  10. git branch : 현재 branch 상태 조회
    git branch 브랜치명 : 새로운 branch 생성
    git siwtch 브랜치명 : 브랜치 간 이동할 때 switch 사용
    git siwtch -c 브랜치명: 브랜치 생성과 동시에 이동
    브랜치 이름 수정
    git branch -m 기존브랜치명 새브랜치명 : -m은 move의 약자
    브랜치 삭제
    git branch -d 브랜치명
    여러 브랜치의 내역 편리하게 보기
    git log --all --decorate --oneline --graph

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   src/constants/Etc.js

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   src/components/Layouts/Wraps/CategoryWrap.tsx
        modified:   src/constants/Etc.js
        modified:   src/modules/MyPage/SaleTab/SaleTab.module.tsx
        modified:   src/test/TestView.js
        modified:   src/user/style/MyPage.scss

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        public/assets/images/intro_topbg.png

워킹 디렉터리 - 프로젝트를 진행하는 실제 작업 공간으로 개발한 소스 및 자원이 존재하며 이곳에서 파일을 수정 및 추가합니다.
Staging Area - 워킹 디렉터리에서 작업한 내역을 Git 디렉터리로 커밋 하기 위해 커밋 대상 목록으로 담아두는 장바구니 목록 같은 영역입니다.
Git 디렉터리 - 실제로는 .git 이라는 이름의 디렉터리이며, 여러가지 버전의 커밋 데이터들과 Git 프로젝트에 대한 모든 정보를 담고 있는 핵심 데이터베이스 디렉터리입니다.

Untracked와 Tracked 상태
워킹 디렉터리에 있는 여러가지 파일들은 Git의 추적 관리 여부에 따라 각각 크게 두 가지 상태로 나눌 수 있습니다.
Untracked와 Tracked 상태인데 뜻 그대로 Tracked는 Git이 해당 파일을 추적 및 관리하는 상태 이며, Untracked는 반대로 아직 Git이 해당 파일을 추적 및 관리하지 않는 상태를 말합니다.

워킹 디렉터리에 있지만 git add나 commit 하지 않은 파일은 Untracked 상태, git add나 commit 했던 적이 있는 파일들은 Tracked 상태입니다.
Tracked 상태인 파일들은 Git이 저장 및 관리하며, Untracked 파일은 Git이 신경쓰지 않습니다.

Untracked files: 아직 git add나 git commit을 하지 않았기에 Untracked 상태이며, Git이 추적관리 하고 있지 않은것
Changes not staged for commit: 변경(수정)이 일어났지만 커밋을 위해 Staged 되지 않은(git add 하지 않은) 파일을 의미합니다. 즉 Tracked 상태이면서 Modified 상태이지만 Staged가 아닌 상태를 말합니다.(이전에 한 번은 git add나 commit을 한 적이 있는 파일이기에 tracked상태인 것)
*Changes to be committed: Staged 상태(git add를 통해 staged된 상태)

출처:링크텍스트

commit 시에는 staged된 내역만을 commit하게 된다.

과거로 돌아가기( "✨협업 시에는 revert ! 를 사용하는 것을 권장")

reset vs revert
reset : 원하는 시점으로 돌아간 뒤 이후 내역들을 지웁니다. (소스트리에서 되돌릴 커밋 상태 우클릭 후 "이 커밋까지 현재 브런치를 초기화" 클릭)
revert : 되돌리기 원하는 시점의 커밋을 거꾸로 실행합니다. (소스트리에서 되돌릴 커밋 상태 우클릭 후 "커밋 되돌리기" 클릭)
1. git reset HEAD~1 : HEAD란 현재 브랜치 마지막 커밋의 스냅샷 바로 전 커밋 단계로 마스터 브랜치를 이동
git reset c80280f : 해당 commit 해시번호로 브랜치 이동!( 이후 내역들은 삭제됨)

1-1. git reset HEAD [file] : git add를 취소할 수 있다.

  1. git revert c80280f: 해당 commit 상태로 돌아가 revert commit
    git revert --no-commit c80280f: 커밋해버리지 않고 revert 하기 (원하는 다른 작업을 추가한 다음 함께 커밋)
    (취소하려면 git reset --hard)

브랜치 합치기 (두 가지 방법 merge vs rebase)

merge: 브랜치의 사용내역들(히스토리)을 남긴 상태에서 병합("협업시에는 merge를 사용")
rebase: 브랜치의 사용내역들(히스토리)을 남기지 않고, 한 줄로 깔끔하게 병합

main브랜치로 switch 후 merge 한다!
1. git merge 합칠 브랜치명 : main에서! 해당 브랜치를 끌어와 병합!
merge는 새로운 하나의 commit.
reset으로 merge 되돌리기 가능 (소스트리에서 merge 바로 전 단계 커밋 우 클릭 후 "해당 커밋단계로 초기화")
merge가 끝나면 병합된 브랜치 삭제( 다 사용한 브랜치는 제때제때 지워주기)

(main이 아닌) rebase할 해당 브랜치로 switch후 merge한다!
2. git rebase mian : main으로 병합하기
소스트리에서 상태를 확인해보면, main 브랜치는 뒤쳐져 있는 상황일 것.
main으로 이동 후 "git merge 병합된 브랜치명" 으로 위치를 맞춰준다. (fast-forward)
병합된 브랜치 삭제

충돌 해결하기

merge)
git merge --abort : 당장 충돌 해결이 어려울 경우 아래 명령어로 merge 중단
해결 가능 시 충돌 부분을 수정한 뒤 git add . , git commit으로 병합 완료
:wq

rebase)
당장 충돌 해결이 어려울 경우 git rebase --abort
충돌 부분을 수정한 뒤 git add . , git rebase --continue
충돌이 모두 해결될 때까지 반복
main에서 git merge conflict-2로 마무리

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(github 토큰)

github과 연동하기

git remote add origin https://github.com/RootCho/git-practice.git
git branch -M main
git push -u origin main

  1. git remote :현재 연동된 원격을 살펴볼 수 있음.
    git remote -v : 그것의 자세한 내용
  2. git remote update: 새로 생생된 원격의 브랜치에 접근하기 위해 git remote를 갱신해줄 필요가 있을 때

협업할 레퍼지토리 내 컴퓨터에 클론하기

클론할 폴더 생성(바탕화면)
해당폴더에서 우클릭 git Bash 클릭
git clone 레퍼지토리 주소
vs코드에서 해당폴더 열기

커밋 주고받기

1.git push
원격에 먼저 적용된 새 버전이 있으면 적용 불가
pull 해서 원격의 버전을 받아온 다음 push 가능
2.git pull

push 할 것이 있을 시 pull 하는 두 가지 방법
git pull --no-rebase - merge 방식
-소스트리에서 확인해보기
-reset으로 되돌린 다음 아래 방식도 해보기

git pull --rebase - rebase 방식
-pull 상의 rebase는 다름 (협업시 사용 OK)

로컬에서 브랜치 만들어 원격에 push 해보기

git branch 브랜치명
git push -u origin from-local
원격에 있는 브랜치까지 조회하기 : git brancn -all

원격의 브랜치 로컬에 받아오기

git fetch
git branch -all(-a)
git switch -t origin/from-remote : 로컬( 내컴퓨터)에도 같은 이름의 브랜치를 생성하여 연결하고 switch

원격의 브랜치 삭제

git push (원격 이름) --delete (원격의 브랜치명)

➕ nas서버 에서 깃으로 협업하기
참조사이트)https://velog.io/@amdye2323/%ED%8C%80%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-GIT-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%88%9C%EC%84%9C
https://sy34.net/synology-naseseo-git-repo-gwanrihagi/

profile
나를 믿고 한 걸음 한 걸음 내딛기! 🍏

0개의 댓글