1. VS Code에서 Git 사용법 및 Merge
VS Code기반으로 개발을 하다보니, Git도 자연스럽게 VS Code로 전부 해야 할 것 같아 관련자료들을 수집해보고, 테스트 해본다.
VS Code에서 보면 주로 Source Control 와 GitLens로 이용하여 Git을 Control 하고 사용하는 것 같다.
개인적으로 보면 GitLens는 잘 동작해서 좋기는 한데, 복잡해서 별로 사용하고 싶지가 않다.
난 소스트리 처럼 간단하고 심플한 기능으로 쉽게 동작되는 것이 너무 좋다.
그래서 가능하다면, VS Code의 기본기능인 Source Control 이 GitLens보다 더 심플해서 이 기반으로 정리하려고 한다.
항상 느끼지만, Git을 사용하다가 사용안하면 자꾸 명령어도 까먹는다.
1.1 VS Code Version 기본 사용법
- VS Code 의 Source Control 준비
아래그림 A. 버튼을 눌러 아래와 같이 Remote/Local 을 동시보도록 확장설정
주의사항
상위 C. Branch를 선택하면 다른 Branch 와 tag가 나오는데, 이를 변경시 Checkout이 되어 소스가 변경되어진다.
1.2 Git Checkout 방법 및 주의사항
- Git Checkout 하기전 확인
상대방이 나 몰래 Remote에 Push를 했을 경우, 현재 나의 Local에는 이게 반영이 안되었으므로,
반드시 Git Pull or Git Sync(Git Pull and Push)를 해줘야한다.
그래야 SOURCE CONTROL REPOSITORIES 가 항상 Remote 와 동일해진다.
Git 항상 다른 사람과 같이 작업하므로 이부분은 모든 부분에서 확인해야함
- Git Checkout 이란?
현재 수정 중 혹은 수정완료 후, 갑자기 다른 Commit or Branch 소스로 변경해서 각 소스를 확인해야 하는 경우가 발생한다.
이때 다른 Git Commit or Git Branch으로 Local 소스변경하는 것이 Git Checkout이다.
보통 VS Code에서 Checkout은 Git Graph 기반 와 상위 C.Branch 를 이용하여 사용하는 것이 가장 편한걸로 생각되어진다.
이때 새로 생성된 폴더와파일은 제거가 되지 않는 경우가 많으므로, 주의하도록 하자
- 방법-A 상위그림 C.Branch 선택시 할 경우
Checkout 동일한 기능이지만, (Branch/Tag) 단위로만 이동되어지며, 쉽게 해당 Local 소스 변경되어진다.
이전에 소스수정중이라면 반드시 주의해야하며 Backup용으로 새로받아 진행해도 된다.
- 방법-B 상위그림 B. Git Graph 기반의 만약 Commit 단위로 Checkout
이 역시 소스 수정중이라면 반드시 주의해야한다.
1.3 Git Stash 기능
Checkout을 하여 다른 것을 보고 싶은데, 현재 Commit을 해야할 File들이 있다면 이때 Git Stash를 이용하자.
이 임시파일들을 Git의 Stash에 저장하고, Checkout하고 나서 변경되어진 Commit or Branch에 이를 적용가능하다.
- Git Stash 의 예
내가 소스를 수정중인 File들을 임시적으로 저장하는 기능이 바로 Git Stash 기능이며, 나의 경우
주로 Git checkout 을 한 다음 그 Version 이 Git Stash이를 이용하여 적용을 한다.
VS Code에서 사용할 경우, STASHES라는 곳에서 확인가능
2. VS Code에서 Git Merge 방법정리
- Git Merge 하기전 확인
상대방이 Remote에 Push를 했을 경우, 현재 나의 Local에는 이게 반영이 안되었으므로,
반드시 Git Pull or Git Sync(Git Pull and Push)를 해줘야한다.
그래야 SOURCE CONTROL REPOSITORIES 가 항상 Remote 와 동일해진다.
Git 항상 다른 사람과 같이 작업하므로 이부분은 모든 부분에서 확인해야함
- Git Merge 방법
Git Merge에도 방법이 있으며, 아래와 같이 간단히 정리한다.
- 현재 Branch의 특정 Commit들만 (Cherry-pick)적용하여 다른 Branch에 Merge 적용
- 현재 Branch 와 다른 Branch Merge (각 Branch 단위로 Merge 진행)
2.1 VS Code 에서 특정 Commit 만 Merge 방법
git cherry-pick command를 사용하며 특정 Commit 만 Merge방법
Cherry Pick Merge라고 하며아래와 같이 특정 Commit만 찾아 Merge를 진행.
- 좌측 release branch :
- develop branch에서 필요한 것만 가져와서 최종 Release 할것
- 우측 develop branch :
- Commit F : 넘어감
- Commit E : 이것만 반영
- Commit D : 넘어감
- Commit C : 원래 Commit C 반영할 차례(빨간색)지만, Commit E만 반영할 예정
- Commit B : 이미 Release 반영
- Commit A : 이미 Release 반영
Commit D는 생략
Commit E 만 release 에 merge 하고 싶을 경우 아래와 같이 cherry-pick 사용
https://geekwebcast.com/git-cherry-picking-with-vs-code-part-1/ |
https://geekwebcast.com/git-cherry-picking-with-vs-code-part-1/ |
상위그림 B. Git Graph 화면으로이동
- Branch Show All
- Show Remote Branches 체크 확인
- Refresh Button (Sync)
만약 특정 Branch만 보고자 하면 해당 Branch만 선택
- Git Graph 에서 원하는 Commit을 찾기
- 상위 Git Graph를 두군데서 확인가능 (Remote 와 Local)
- 항상 현재 사용중인 Branch가 맨 좌측에 위치 (현재 develop)
- Local 와 Remote 의 Commit History가 다르다면, Synchronize Change를 맟춰줘서 동일하게 보도록한다.
Git Graph에서도 항상 Current Branch가 맨 왼쪽에 나옴
- Git Graph에서 원하는 Develop Branch에서 원하는 Commit을 찾음
- 우측 눌러 Cherry-pick 선택
조건사항-1. Cherry Pick Merge를 진행하는데, 소스상에서 겹치는 부분이 없다면,
아래와 같이 Sync Changes 2 (Cherry Pick 갯수) 확인
바로 자동으로 Merge진행
조건사항-2. Merge를 진행하는데, 소스상에서 겹치는 부분이 있다면,
아래 Branch Merge와 거의 동일
모든 기준은 상위에서 설정한 Current Branch기준
Current Branch에 Merge 된 것을 확인
세부내용 출처 (아래 링크 참조)
2.2 VS Code Branch Merge 방법
Git Merge를 할 경우,
Bracn Merge 이든, Cherry-Pick 이든, 1개 File에서 기존 것 과 새로운 것이 겹치면 항상 선택을 해야한다.
Merge Changes-> 각 파일
- Accept Current Change: 기존 그대로 유지
- Accept Incoming Change: 새로 적용된 것으로 변경
- Accept Both Change: 두개를 다 적용
- Comare Changes: 변경사항 비교
1. Merge Changes 확인
2. Merge Changes -> .gitignore 확인
- 대부분 새로운것을 대체하여 사용하므로 Accept Incoming Change로 변경
- 기존것을 유지하고자 하면 Accept Current Change 진행
3. Github 의 Release 방법(Tag)
VS Code에서 Tag를 할수도 있겠지만, 나의 경우는 Github를 사용할 경우, 직접 Github에서 Tag를 하는 것을 선호하는 편이다.
이유는 Release시 Git에서 Tag하는 것 보다 편하며, 직접 필요한 파일도 추가가능할 뿐아니라, 추후 수정관리하기도 좋다.
최종 Release 할 경우, Target Branch을 선택하여 정해야 하므로
미리 VS Code에서 본인의 Git History(View Graph로 확인)
- Github Release Menu
- Github의 소스에서 Release로 이동
- 우측 draft a new releae 선택
- Draft a new release Menu
- 좌측 choose a tag 버튼선택
- choose a tag 의 빈공간 (Find or Create a new tag)
- release/v1.xxxx or v1.xxxx 새로이름 Tag 생성
- Target 선택 (release 할 branch or commit 위치)
- Release Title 작성
- Release v1.x.x
- 내용은 Markdown이 되므로 되도록 Markdown Rule로 적용가능
- ** v1.x.x **
- ** Features and Enhancements **
- A. updated something
- B. added new function related to something
- **Fix Bugs **
- A. fixed the bug related to something
- Preview로 반드시 확인
- 상위 작성된 Markdown Preview 확인
- Attach binaries (옵션)
- 기본으로 Assets 에 Source는 zip 과 tar.gz 제공
- 이외 Binary를 추가로 넣을 경우, Releae Binary 와 OTA Binary
Asset (Target기반으로 Source Code zip/tar.gz 파일제공 )
상위 내용은 추후 Release 후에도 수정도 가능하므로 실수해도 괜찮다.
4. Git 기반의 기타기능들
VS Code 기본 메뉴에서 Explorer 에서 각 File을 우측클릭메뉴 기능
- VS Code File 우측 메뉴
일반 File 과 비교할 경우
- compare with selected
- select for compare
Git 관련 Command
- commit changes (다른 commit 과 branch와 비교)
- open file history ( File 변경사항들만 있는 Commit 전부확인)
- open Timeline (Commit 과 File Save History까지 확인가능)
- Git: View File History ( 전체를 쉽게 보지만, Git Graph를 더 추천)
5. VS Code의 필요기능정리
VS Code를 사용하면 , 많은기능들이 제공하는데, 보통 단축키로 제공으로만 제공해주는 것들이 많은 것 같다.
매번 까먹어서 다시 링크로 넣어두도록 한다.
- VS Code 관련 단축키 확인
Code 정렬시 사용하며, 좌측/우측 (가장많이 사용)
Line Shift ( Ctrl+[ , Ctrol+] )
- VS Code 의 laucnch.json 사용법
VS Code의 Run and Debug에 연결하여 사용가능하다.
.vscode 안에 넣어두면된다.
- VS Code의 Task.json 사용법
Powershell 기반으로 이용가능하므로 이용하도록하자.