경일게임아카데미 멀티 디바이스 메타버스 플랫폼 개발자 양성과정 20220419 2022/04/04~2022/12/13
경일 메타버스 20220419 3주차 2일 수업내용. 버전 관리 시스템과 Git, Git 명령어, 실제 Git 사용
Git
- 자료: https://docs.google.com/document/d/17rxYyz455VJINstBk13HqlG42ZeiZKK0y7Fa2NkVsWE/edit
명령어 - 연습: https://learngitbranching.js.org/?locale=ko
- 사전: https://git-scm.com/docs
- 설치: http://git-scm.com/
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을 추적할 다른 브랜치도 지정 가능.
-
git checkout -b 추적시킬-브랜치명 추적할-원격-브랜치명 : 브랜치를 새로 만들고, HEAD를 놓고, 브랜치가 원격 브랜치를 추적하도록 설정한다.
-
git branch -u 추적할-원격-브랜치명 (추적시킬-브랜치명) : 브랜치가 원격 브랜치를 추적하도록 설정한다. 현재 작업 중인 브랜치라면 브랜치명을 생략 가능하다.
- git branch -d 브랜치명 : 브랜치를 삭제
-
git push 원격-저장소 위치 : 위치로 가서 모든 커밋을 수집하고, 원격 저장소에 부족한 커밋을 채워넣는다.
-
git push 원격-저장소 로컬-위치:원격-위치 : 로컬 위치로 가서 모든 커밋을 수집하고, 원격 저장소의 원격 위치에 부족한 커밋을 채워넣는다.
- :은 colon refspec(콜론 참조스펙) : git이 알아낼 수 있는 위치
-
git fetch 원격-저장소 위치 : 위의 push와 같이, 원격의 위치로 가서 모든 커밋을 수집하고, 로컬 저장소에 부족한 커밋을 원격 브랜치 밑에 채워넣는다. 콜론 참조스펙도 사용 가능하다.
git fetch 원격-저장소 원격-위치:로컬-위치
- 딱히 인자가 없다면, 모든 원격 브랜치로 커밋들을 내려받는다. -
콜론 참조스펙에서, 앞의 로컬 위치를 (없음)으로 지정 가능
- push - 로컬, 원격의 브랜치(위치)의 삭제
- fetch - 로컬에 원격에 넣은 이름의 브랜치 생성
-
git pull 원격-저장소 위치 : pull은 fetch에 merge를 더한 것이기에, 마찬가지로 원격의 위치로 가서 모든 커밋을 수집하고, 로컬 저장소에 부족한 커밋을 원격 브랜치 밑에 채워넣고 merge한다. 콜론 참조스펙도 사용 가능하다.
유닉스 (git bash) 기초 명령어 및 Git 실사용
-
cd : change directory, 디렉토리 변경
-
mkdir 디렉토리명 : make directory, 디렉토리 생성
-
ls : list, 디렉토리 안 모두 표시
-
git init : git 시작, 레포지토리 생성. Initialize repository
-
touch 파일명 : 빈 파일 생성
-
clear : 지우기
-
rm -f 파일명 : 파일 삭제
-
git status : repository 상태 확인
-
git add 파일명 : git에 파일 추가, 파일명에 .을 입력하면 디렉토리 내 전부를 추가 → staged 상태로 변환, 스테이징 영역 추가
-
git commit : 커밋(commit)을 한다. 설정한 텍스트 에디터로 이동. (#이후는 주석)
- 옵션 -m “내용” : 바로 커밋 내용을 입력 가능
-
git log : 커밋 기록 표시, 비교적 많은 정보
-
git lg : 커밋 기록 표시, 커밋 트리. 보기 쉬움.
- 옵션 —all : 모든 브랜치 표시
-
git restore 파일명 : 변화 내용 복구
-
git config : git 설정, Configure repository
-
vi 파일명 : vim editor 열기
- vim editor
vim editior 안에서 i : insert mode, 텍스트 작성 모드
vim editior 안에서 Esc : 명령어 모드
:wq : vim editior에서 나가기
-
표시 내용 CONFLICT : 충돌이 일어났다는 의미.
위의 ====과 Change 위치 표시 등을 지우고, git add 해줌으로써 수동으로 충돌 해결. -
병합 충돌 해결 기능 : 다음은 위와 같은 충돌 상황이지만, 툴이 visual studio code이기에 제공되는 충돌 처리 기능이 있다.
HEAD 표시의 위를 보면, 4가지 선택지가 나온다. 기존 변화를 남길지, 신규 변화를 남길지, 둘 다 남길지, 그리고 둘을 비교해볼지를 선택해 자동으로 충돌 없이 병합이 가능하다.
기타
- 교수님처럼 로그를 git adog로 모든 브랜치를 예쁘게 한 줄에 그래프로 표시하기 위한 설정 명령.
git config --global alias.adog "log --all --decorate --oneline --graph”
실사용 : git adog
* 브랜치 명은 다른 커밋의 주소 등과 겹쳐서는 안된다. * HEAD로 지정된 브랜치는 강제 이동이 되지 않는다.
윈도우 단축키
Window + E : 파일 탐색기 열기
Author And Source
이 문제에 관하여(경일게임아카데미 멀티 디바이스 메타버스 플랫폼 개발자 양성과정 20220419 2022/04/04~2022/12/13), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@strange_tiger/경일게임아카데미-멀티-디바이스-메타버스-플랫폼-개발자-양성과정-20220419-2022040420221213저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)