경일게임아카데미 멀티 디바이스 메타버스 플랫폼 개발자 양성과정 20220419 2022/04/04~2022/12/13

경일 메타버스 20220419 3주차 2일 수업내용. 버전 관리 시스템과 Git, Git 명령어, 실제 Git 사용
Git

git merge와 git rebase의 차이

git merge : 타임라인이 남는다. 커밋트리가 복잡해진다.
git rebase : 커밋트리가 깔끔하다. 히스토리를 수정하기에 작업이 꼬이기 쉽다.

  • 개발자 취향 차이

수업 내용 간단 정리

#1 원격 명령어

  • git push / pull/ fetch

: 브랜치 이름

colon refspec으로 source:destination

git bash

#2 이외의 명령어

  • git config : 설정
  • git add : 스테이징 영역 추가
  • git restore : 변경사항 폐기
  • git log : 그래프 (로그)를 보여줌
  • git status : 레포지토리 상태를 확인
  • git init : 레포지토리 생성

#3 Git의 동작

  • HEAD : 어떤 브랜치를 가리키는지에 대한 내용이 담겨 있음
  • ref/heads 에 브랜치에 대한 파일이 있다.
    • 해당 파일의 이름은 브랜치의 이름
    • 그 파일에는 커밋 ID가 있었다. (해시값)
  • ref/tags 에 태그에 대한 파일이 있다.
    • 해당 파일의 이름은 태그의 이름
    • 그 파일에는 해시값이 있었다.
  • objects에는 변경 사항이 저장되어 있음. => 각 커밋의 내용.

#4 vi 사용법

  • 명령어 모드랑 편집 모드랑
    - 편집하고 싶을 땐 i키를 누름
    - ESC키를 누르면 명령어 모드
    - 파일을 저장하고 나가려면 명령어 모드에서 :wq 타이핑

Git 명령어

원격 추적

원격 추적 : main브랜치는 o/main브랜치를 추적하도록 설정되어 있다. 이것은 main가 merge와 push할 내재된 목적지가 생겼다는 뜻.

  • pull 작업을 하는 도중, 커밋들은 o/main에 내려받아 지고 그다음 main 브랜치로 merge된다. merge에서 내재된 타겟은 이 연결에서 결정한다.
  • push 작업을 하는 도중, main 브랜치의 작업은 원격의 main브랜치(로컬에서 o/main로 표현되는)로 push 된다. push의 목적지는 main와 o/main의 연결에서 결정된다.
  • o/main을 추적할 다른 브랜치도 지정 가능.
  1. git checkout -b 추적시킬-브랜치명 추적할-원격-브랜치명 : 브랜치를 새로 만들고, HEAD를 놓고, 브랜치가 원격 브랜치를 추적하도록 설정한다.

  2. git branch -u 추적할-원격-브랜치명 (추적시킬-브랜치명) : 브랜치가 원격 브랜치를 추적하도록 설정한다. 현재 작업 중인 브랜치라면 브랜치명을 생략 가능하다.

    • git branch -d 브랜치명 : 브랜치를 삭제
  3. git push 원격-저장소 위치 : 위치로 가서 모든 커밋을 수집하고, 원격 저장소에 부족한 커밋을 채워넣는다.

  4. git push 원격-저장소 로컬-위치:원격-위치 : 로컬 위치로 가서 모든 커밋을 수집하고, 원격 저장소의 원격 위치에 부족한 커밋을 채워넣는다.

    • :은 colon refspec(콜론 참조스펙) : git이 알아낼 수 있는 위치
  5. git fetch 원격-저장소 위치 : 위의 push와 같이, 원격의 위치로 가서 모든 커밋을 수집하고, 로컬 저장소에 부족한 커밋을 원격 브랜치 밑에 채워넣는다. 콜론 참조스펙도 사용 가능하다.
    git fetch 원격-저장소 원격-위치:로컬-위치
    - 딱히 인자가 없다면, 모든 원격 브랜치로 커밋들을 내려받는다.

  6. 콜론 참조스펙에서, 앞의 로컬 위치를 (없음)으로 지정 가능

    • push - 로컬, 원격의 브랜치(위치)의 삭제
    • fetch - 로컬에 원격에 넣은 이름의 브랜치 생성
  7. git pull 원격-저장소 위치 : pull은 fetch에 merge를 더한 것이기에, 마찬가지로 원격의 위치로 가서 모든 커밋을 수집하고, 로컬 저장소에 부족한 커밋을 원격 브랜치 밑에 채워넣고 merge한다. 콜론 참조스펙도 사용 가능하다.

유닉스 (git bash) 기초 명령어 및 Git 실사용

  1. cd : change directory, 디렉토리 변경

  2. mkdir 디렉토리명 : make directory, 디렉토리 생성

  3. ls : list, 디렉토리 안 모두 표시

  4. git init : git 시작, 레포지토리 생성. Initialize repository

  5. touch 파일명 : 빈 파일 생성

  6. clear : 지우기

  7. rm -f 파일명 : 파일 삭제

  8. git status : repository 상태 확인

  9. git add 파일명 : git에 파일 추가, 파일명에 .을 입력하면 디렉토리 내 전부를 추가 → staged 상태로 변환, 스테이징 영역 추가

  10. git commit : 커밋(commit)을 한다. 설정한 텍스트 에디터로 이동. (#이후는 주석)

  • 옵션 -m “내용” : 바로 커밋 내용을 입력 가능
  1. git log : 커밋 기록 표시, 비교적 많은 정보

  2. git lg : 커밋 기록 표시, 커밋 트리. 보기 쉬움.

  • 옵션 —all : 모든 브랜치 표시
  1. git restore 파일명 : 변화 내용 복구

  2. git config : git 설정, Configure repository

  3. vi 파일명 : vim editor 열기

  • vim editor
    vim editior 안에서 i : insert mode, 텍스트 작성 모드
    vim editior 안에서 Esc : 명령어 모드
    :wq : vim editior에서 나가기
  1. 표시 내용 CONFLICT : 충돌이 일어났다는 의미.

    위의 ====과 Change 위치 표시 등을 지우고, git add 해줌으로써 수동으로 충돌 해결.

  2. 병합 충돌 해결 기능 : 다음은 위와 같은 충돌 상황이지만, 툴이 visual studio code이기에 제공되는 충돌 처리 기능이 있다.

    HEAD 표시의 위를 보면, 4가지 선택지가 나온다. 기존 변화를 남길지, 신규 변화를 남길지, 둘 다 남길지, 그리고 둘을 비교해볼지를 선택해 자동으로 충돌 없이 병합이 가능하다.

기타

  • 교수님처럼 로그를 git adog로 모든 브랜치를 예쁘게 한 줄에 그래프로 표시하기 위한 설정 명령.
    git config --global alias.adog "log --all --decorate --oneline --graph”
    실사용 : git adog
* 브랜치 명은 다른 커밋의 주소 등과 겹쳐서는 안된다.
* HEAD로 지정된 브랜치는 강제 이동이 되지 않는다.

윈도우 단축키

Window + E : 파일 탐색기 열기

좋은 웹페이지 즐겨찾기