Git

Dev_Oh·2023년 1월 7일
1

git

목록 보기
1/2
post-thumbnail

pwd : 현재 파일 위치 확인
cd : 들어가기

Git GUI 소스트리

다운로드 링크 : https://www.sourcetreeapp.com/

VSC Git 이용

git 이메일과 네임 세팅

깃 최초설정

  • 깃아이디와는 다름 내가 누군지 설정하는것
//깃 이메일 아이디 설정
git config --global user.email "abc@def.com"  // 이메일 설정
git config --global user.name "name"  // 이름설정
//설정 확인
git config --global user.name
git config --global user.email

기본 브랜치명 변경

git config --global init.defaultBranch main //메인 브랜치 master(x) 흑인노예 연상

프로젝트 생성 & git 관리

해당 폴더에서 아래 명령어 입력

// .git 폴더 생성
git init

폴더 숨김모드로 .git 폴더가 생성됨

// 깃의 관점에서 변경사항 확인
git status

Git에게 맡기지 않을것

a. 포함할 필요가 없을 때

  • 자동으로 생성 또는 다운로드되는 파일들 (빌드 결과물, 라이브러리)

b. 포함하지 말아야 할 때

  • 보안상 민감한 정보를 담은 파일

.gitignore 파일을 사용해서 배제할 요소들을 지정할 수 있습니다.

깃 관리 해제 방법

  1. .gitignore 파일 생성
  2. .gitignore 에 파일명 적어주기
secrets.yaml //공개하지 않을 파일명
코드를 입력하세요

.gitignore 형식

git 형식
https://git-scm.com/docs/gitignore

# 이렇게 #를 사용해서 주석

# 모든 file.c
file.c

# 최상위 폴더의 file.c
/file.c

# 모든 .c 확장자 파일
*.c

# .c 확장자지만 무시하지 않을 파일
!not_ignore_this.c

# logs란 이름의 파일 또는 폴더와 그 내용들
logs

# logs란 이름의 폴더와 그 내용들
logs/

# logs 폴더 바로 안의 debug.log와 .c 파일들
logs/debug.log
logs/*.c

# logs 폴더 바로 안, 또는 그 안의 다른 폴더(들) 안의 debug.log
logs/**/debug.log

커밋 버전관리(캡슐담기)

  • 커밋(commit) = 버전 같다고 보면 됨

변경사항확인

git status

파일 한개 담기

git add 파일명.html

모든 파일담기

git add .

타임캡슐(버전) 묻기

git commit
작업 Vi 명령어 상세
입력 시작 i 명령어 입력 모드에서 텍스트 입력 모드로 전환
입력 종료 ESC 텍스트 입력 모드에서 명령어 입력 모드로 전환
저장 없이 종료 :q
저장 없이 강제 종료 :q! 입력한 것이 있을 때 사용
저장하고 종료 :wq 입력한 것이 있을 때 사용
위로 스크롤 k git log등에서 내역이 길 때 사용
아래로 스크롤 j git log등에서 내역이 길 때 사용
  • FIRST COMMIT 입력한 뒤 저장하고 종료

커밋 메시지까지 함께 작성하기

git commit -m "FIRST COMMIT"

아래 명령어와 소스트리로 확인

git log
[:q로 빠져나옴,j내리기,k올리기]
  • 종료 :q

addcommit을 한번에하기

git commit -am "(메시지)"

※ git 타임 캐슐담기 순서

//터미널
//1. 파일 추가 및 수정
git add .   //2.수정사항 담기
git commit -m "FIRST COMMIT" // 3. 커밋 메시지와 함께 커밋 설정

Git 과거로 돌아가기

  • reset : 원하는 시점으로 돌아간 뒤 이후 내역들을 지웁니다.
  • revert : 되돌리기 원하는 시점의 커밋을 거꾸로 실행합니다.

reset 사용해서 과거로 돌아가기

  1. 로그 확인
git log

  • 되돌아갈 시점: Add team Cheetas의 커밋 해시 복사
  • :q로 빠져나가기

2.해당 커밋으로 돌아가기

git reset --hard (돌아갈 커밋 해시)

reset 하기 전 시점으로 복원

git reset --hard

revert로 과거 커밋 되돌리기

  • 협업때는 revert 사용할것
git revert (되돌릴 커밋 해시)
  • :wq 로 커밋 메시지 저장

커밋해버리지 않고 revert 하기

git revert --no-commit (되돌릴  커밋 해시)
  • 취소할려면 git reset --hard

소스트리로 reset revert 하는법

Branch 분기 (다른차원)

  • 프로젝트를 하나 이상의 모습으로 관리할때
    • 예) 실배포용, 테스트서버용, 새로운 시도용
  • 여러 작업들이 각각 독립되어 진행할때
    • 예) 신기능1,2,코드개선,긴급수정...
    • 각각의 차원에서 작업 한뒤 확정된 것을 메인 차원으로 통합하는것
  • 위 모든것을 하나의 프로젝트 폴더에서 진행할 수 있도록 하는것

브런치 생성/이동/삭제하기

브랜치 생성

  • add 브랜치 생성
git branch add

브랜치 목록확인

git branch

브랜치 이동

  • add 브랜치로 이동
git switch add

브랜치 생성과 동시에 이동하기

  • new-teams 브랜치 생성후 이동
git switch -c new-teams

브랜치 삭제

git branch -d (삭제할 브랜치명)

깃의 브랜치 포함 모든 로그를 살펴볼려면?

git log --all --decorate --oneline --graph

브랜치 병합

merge : 두 브랜치를 한 커밋에 이어붙입니다.

  • 브랜치 사용내역을 남길 필요가 있을 때 적합한 방식입니다.
  • 기존 브랜치 내역을 남기기 때문에 협업할때 사용

rebase : 브랜치를 다른 브랜치에 이어붙입니다.

  • 한 줄로 깔끔히 정리된 내역을 유지하기 원할 때 적합합니다.
  • 협업시에는 사용하지 않는게 좋다

merge로 합치기

add-coach 브랜치를 main 브랜치로 merge 하기

git merge add-coach

merge로 합친 브랜치 삭제하기

git branch -d (삭제할 브랜치)

merge 이전 으로 되돌리기


이전 커밋에서 오른쪽 버튼 현재 브랜치 초기화 시키면 이전으로 돌아감

rebase로 합치기

new-teams 브랜치를 main 브랜치로 rebase 하려면,

  • new-teams 브랜치로 이동( merge와 반대 )
  • 아래 명령어로 병합
git rebase main

  • 위 소스트리를 보면 main 브랜치가 뒤쳐져 있는 상황임
  • main 브랜치를 이동 후 아래 명령어로 new-teams 의 시점으로 fast-forward
git merge new-teams
  • new-teams 브랜치 삭제
git branch -d new-teams

브랜치간 충돌 해결방법

merge 충돌 해결방법

브랜치간의 다른 내용으로 충돌발생

  • 브랜치간의 다른 내용을 선택할 수 있게 선택지를줌

  • 다른점 바로 찾기 위해서는 검색에서 <<<<<<< 검색하여 쉽게 찾을수 있음

  • 당장 충돌이 많아 해결이 어려울 때는 아래 명령으로 merge 중단처리

git merge --abort
  • 브랜치 충돌을 해결후 아래 명령어 순서대로 해서 커밋완료
git add .
git commit 

:wq 저장하고 나옴

rebase 충돌 해결방법

위 같이 병합 충돌이 났을때

  • 당장 충돌 해결이 어려울 경우 아래 명령어로 중단
git rebase --abort

해결 가능 시

  • 충돌 부분을 수정한 뒤 git add .
  • 아래 명령어로 계속
git rebase --continue
  • 충돌해결 까지 반복

브랜치 병합 소스트리로 진행

브랜치 생성

브랜치 병합

merge 충돌 해결해보기

  • 충돌이 일어나면 원인을 해결하고 커밋하면 해결

GitHub 사용하기

  • Git으로 관리되는 프로젝트 원격 저장소
  • 커밋된 최신버전을 자기 버전에 적용해야 커밋 가능
  • 오픈소스의 성지

GitHub 시작하기

가입하고 토큰 레파지토리 만들기

1. sign up 으로 가입 후 로그인
2. Personal access token 만들기
  • 우측 상단의 프로필 settings
  • Debeloper Settings
  • Personal access tokens - Generate new token
  • repo 및 원하는 기능에 체크, 기간 설정 뒤 Generate token
  • 토큰 안전한 곳에 보관해 둘것
3. 토큰 컴퓨터에 저장 하기()
  • window 자격 증명 관리자

  • window 자격 증명 선택

  • git:https://github.com 자격 정보 생성

  • 사용자 이름(깃아이디)과 암호(토큰) 붙여넣기

4. 소스트리에도 추가하기
  • 도구 -> 옵션 -> 인증 -> github.com 선택
  • 토큰 작성
5. 레파지토리 생성
  • public 공유
  • private 개인적으로만

6. 협업시 동료추가

  • 레파지토리 접속 하여 setting -> collaborators -> add peple

원격 저장소 사용하기

  1. https 선택하기
  2. 이미 작성된게 있을경우 하단 내용을 터미널에 복사 붙여넣기
  • 토큰이 정상적으로 등록 되어 있다면, 정상적으로 등록됨

GitHub 레포지토리 생성후 복붙 명령어 살펴보기

git remote add origin (원격 저장소 주소)
  • 로컬의 Git 저장소에 원격 저장소로의 연결을 추가 하는것
    • 원격 저장소 이름은 흔이 origin 사용 다른것으로 수정 가능
git branch -M main
  • GitHub는 기본 브랜치명을 main으로 권장
git push -u origin main
  • 로컬 저장소의 커밋 내역들 원격으로 push (업로드)
    • -u 또는 --set-upstream 은 현재 브랜치와 명시된 원격 브랜치를 기본으로 열결함

GitHub의 해당 레포지토리 페이지 새로고침 살펴보기

원격(origin)목록보기
git remote
  • 자세히 보기 : git remote -v
원격 지우기
git remote remove (origin 등 원격 이름)
  • 로컬 프로젝트에서만 연결을 없앰, GitHub에서는 지워지지 않음

GitHub 레파지토리 옮겨오는 방법(clone)

  • 협업시 이용
  1. https 복사

  2. 옮겨올 폴더에서 Git bash로 터미널 열기

git clone (원격 저장소 주소)
  • 레파지토리가 복사됨
  • vs로 열어서 git log로 커밋내역 확인 가능

push 와 pull

원격으로 커밋 밀어올리기(push)

  1. vs에서 커밋하면 원격 메인이 뒤쳐져 있음 이걸 밀어올림

  2. 아래 명령어로 푸시 하면 원격에 올라감

git push
  • 이미 git push -u origin main 으로 대상 원격 브랜치가 지정되어있기 때문에 git push만으로 올라감

원격의 커밋 당겨오기(pull)

git pull
  • vs 터미널에서 바로 당겨올수 있음

※ pull 할것이 있을때 push 하면?

  • 오류문이 발생하고 최신 버전일때만 push가 가능

2가지로 해결 가능

  • git pull --no-rebase (merge방식)

    • 로컬과 원격의 메인 브랜치가 갈라진 다음 병합됨
  • git pull --rebase (rebase방식)

    • 원격을 먼저 pull해온다음 로컬이 한걸 잘라서 원격에 붙임
    • pull상의 rebase는 다름(협업시 사용 ok)
위 부분에서 충돌이 발생하면?
git pull --no-rebase //충돌해결후
git add . 
git commit -m '커밋내용'
git push

로컬의 내역 강제 push 하기

  • 원격의 내용이 잘못 되어있으면 로컬의 내용으로 원격 맞춰주기
git push --force
  • 협업할때는 협의를 통해서 해야함

원격의 브랜치 다루기

원격에 새로운 브랜치 추가

  1. 브랜치 생성
git branch (브랜치 이름)
git switch (생성한 브랜치이름)
  1. 브랜치 추가
git push -u origin from-local
// git push -u (원격명) (브랜치명)

--set-upstream -> -u 로 축약 해서 사용 가능

로컬에서 원격 브랜치까지 한번에 보기

git branch --all
  • git branch -a 로 줄여 사용가능

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

  • 협업시 동료가 추가한 브랜치 받으려면 아래의 명령어로 원격의 변경사항 확인
git fetch
  • 아래 명령어로 로컬에 같은 이름의 브랜치를 생성하여 연결하고 switch
git switch -t origin/from-remote
//git switch -t (원격명)/(브랜치명)

원격의 브랜치 삭제

git push (원격명) --delete (원격 브랜치명)
  • --delete -> -d 로 축약 가능

소스트리로 하기

  1. 레파지토리 추가 하기
  • 저장소 -> 원격저장소 추가 -> 주소 넣고 origin2 생성

  • origin2에도 푸시하기

  • 새로운 레파지토리에도 저장 됨

패치 원격 상황 보기

원격에 생성된 브랜치 로컬로 가져오기


패치로 확인 -> 오른쪽버튼 -> 체크아웃

Git tag

profile
웹개발이 재밌다. 8년차 웹퍼블리싱

0개의 댓글