3/21/2022

VS Code Git 사용법 및 Merge

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 준비 
VS Code의 Source Control 이동 후 Remote도 확인 가능하도록 아래와 같이 View를 확장 

아래그림 A. 버튼을 눌러 아래와 같이 Remote/Local 을 동시보도록 확장설정
  1. Source Control Repositories:  사실 Local 정보, 전체 Repository 를 Control, Remote Repostory를 쉽게 확인가능 
  2. Source Control: Local Source Git 정보, 주로 현재 소스 Control을 함 


상위그림 B. Git Graph: 각 Commit된 것을 Graph로 보여줌
상위그림 C. Branch:  Remote의 Branch로 정확하게 Checkout 기능


주의사항
상위 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에서 CheckoutGit Graph 기반상위 C.Branch 를 이용하여 사용하는 것이  가장 편한걸로 생각되어진다.

이때 새로 생성된 폴더와파일은 제거가 되지 않는 경우가 많으므로, 주의하도록 하자 


  • 방법-A  상위그림 C.Branch 선택시 할 경우 
Checkout 동일한 기능이지만, (Branch/Tag) 단위로만 이동되어지며, 쉽게 해당 Local 소스 변경되어진다. 
이전에 소스수정중이라면 반드시 주의해야하며 Backup용으로 새로받아 진행해도 된다. 

  • 방법-B  상위그림 B. Git Graph 기반의 만약 Commit 단위로 Checkout 
상위 B. Git Graph를 실행하여, 해당 원하는 Commit으로 찾아가 오른쪽 메뉴로 Checkout  현재 Local 소스변경하여 확인한다. 
이 역시 소스 수정중이라면 반드시 주의해야한다.   
 


이외에도 다양한 방법이 있겠지만, 나의 경우는 이게 편하다. 

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에도 방법이 있으며, 아래와 같이 간단히 정리한다.  
  1. 현재 Branch의 특정 Commit들만 (Cherry-pick)적용하여 다른 Branch에 Merge 적용 
  2. 현재 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 화면으로이동 
  1. Branch Show All
  2. Show Remote Branches 체크 확인  
  3. Refresh Button (Sync)  

만약 특정 Branch만 보고자 하면 해당 Branch만 선택

  • Git Graph 에서 원하는 Commit을 찾기  
    1. 상위 Git Graph를 두군데서 확인가능 (Remote 와 Local)
    2. 항상 현재 사용중인 Branch가 맨 좌측에 위치 (현재 develop)
    3. Local 와 Remote 의 Commit History가 다르다면, Synchronize Change를 맟춰줘서 동일하게 보도록한다.
Git Graph에서도 항상 Current Branch가 맨 왼쪽에 나옴  

  1. Git Graph에서 원하는 Develop Branch에서 원하는 Commit을 찾음 
  2. 우측 눌러 Cherry-pick 선택 


Cherry Pick 선택하면 Yes 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-> 각 파일  
  1. Accept Current Change: 기존 그대로 유지 
  2. Accept Incoming Change: 새로 적용된 것으로 변경 
  3. Accept Both Change: 두개를 다 적용 
  4. Comare Changes: 변경사항 비교 
    

1. Merge Changes 확인 



2. Merge Changes -> .gitignore 확인 
  1. 대부분 새로운것을 대체하여 사용하므로 Accept Incoming Change로 변경
  2. 기존것을 유지하고자 하면 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
  1. Github의 소스에서 Release로 이동 
  2. 우측 draft a new releae 선택 

  • Draft a new release Menu
  1. 좌측 choose a tag 버튼선택  
  2. choose a tag 의 빈공간 (Find or Create a new tag)
    1. release/v1.xxxx or v1.xxxx 새로이름 Tag 생성
  3. Target 선택 (release 할 branch or commit 위치) 
  4. Release Title 작성
    1.  Release v1.x.x 
  5. 내용은 Markdown이 되므로 되도록 Markdown Rule로 적용가능
    1. ** v1.x.x **

    2. ** Features and Enhancements **
    3.    A. updated something 
    4.    B. added new function related to something

    5. **Fix Bugs **
    6.    A. fixed the bug related to something 
  6. Preview로 반드시 확인  
    1. 상위 작성된 Markdown Preview 확인 
  7. Attach binaries  (옵션)
    1. 기본으로 Assets 에 Source는 zip 과 tar.gz 제공
    2. 이외 Binary를 추가로 넣을 경우, Releae Binary 와 OTA Binary  



Asset (Target기반으로 Source Code zip/tar.gz 파일제공 ) 

상위 내용은 추후  Release 후에도 수정도 가능하므로 실수해도 괜찮다.  


4. Git 기반의 기타기능들 

VS Code 기본 메뉴에서 Explorer 에서 각 File을 우측클릭메뉴 기능 

  • VS Code File 우측 메뉴
일반 File 과 비교할 경우 
  1. compare with selected 
  2. select for compare 
Git 관련 Command 
  1. commit changes  (다른 commit 과 branch와 비교) 
  2. open file history  ( File 변경사항들만 있는 Commit 전부확인)
  3. open Timeline  (Commit 과 File Save History까지 확인가능)
  4. 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 기반으로 이용가능하므로 이용하도록하자.