ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • yalco) Git hub
    기타 2023. 3. 5. 17:55

    https://www.youtube.com/watch?v=1I3hMwQU6GU

    ** Yalco 유투브의 GitHub 무료강의를 정리했다.

    1 _ 윈도우 세팅

    ** 설치 시 Git Bash를 반드시 포함시킬 것

     

    git config --global core.autocrlf true

    협업 시 윈도우와 맥에서 엔터 방식 차이로 인한 오류를 방지

     

     - VS code의 기본 터미널을 Git Bash로 설정

    VS code에서 ctrl + shift + p

    Select Default Profile 선택

    Git Bash 선택 ( Git Bash를 C 드라이브에 설치해야 해당 설정이 가능하다 )

    ** Git 등 프로그래밍 관련 소프트웨어들은 C드라이브에 설치해야 연계가 원활하다.

     


    2 _ Git의 사용 방식

    CLI : 터미널에 명령어를 이용하는 방식

    GUI : 소스트리 등의 프로그램을 사용하는 방식

     

    ** CLI 위주로 실습해서 명령어와 동작 방식을 익히고 사용할 때는 작업의 성질에 따라 유리한 것으로 혼용하자.

     


    3 _ Git 최소 설정

    Git 전역으로 사용자 이름과 이메일 주소 설정  ( github 계정과는 별개 )

     

    아래의 명령어로 이름과 이메일을 설정 / 확인할 수 있다.

    이름, 이메일 설정
    git config --global user.name "(본인 이름)"
    git config --global user.email "(본인 이메일)"
    
    이름, 이메일 확인
    git config --global user.name
    git config --global user.email
    
    기본 브랜치명 변경
    git config --global init.defaultBranch main

     


    4 _ 프로젝트 생성 , git 관리 시작

    원하는 위치에 폴더를 생성하고 VS Code로 열람 한 후

    git init

     - 위 명령어를 실행할 경우 해당 폴더에 숨김모드로  .git 폴더가 생성된다 ( 폴더 삭제 시 git 관리내역 삭제 )

     

    git status

     - 해당 폴더의 git 관리 상황을 나타낸다

     

     - 특정 파일을 깃의 관리에서 배제하고 싶을 때 ( 비밀분서나 정보를 취급하는 경우 )

     :  .gitignore 파일을 생성, 파일 내부에 배제하고싶은 파일의 이름을 작성한다.

     - .gitignore 파일에 css를 작성하고 저장한 뒤 git status로 확인한 결과 css 폴더를 status 명령어로 찾을 수 없게 되었다.

    .gitignore 형석
    
    // 모든 file.c
    file.c
    
    // 최상위 폴더의 file.c
    /file.c
    
    // 모든 .c 확장자 파일
    *.c
    
    // .c 확장자지만 무시하지 않을 파일(this)
    !not_ignore_this.c
    
    // logs란 이름의 파일 또는 폴더와 그 내용들
    logs
    
    // logs란 이름의 폴더와 그 내용들
    logs/
    
    // logs 폴더 바로 안의 debug.log와 .c 파일들 ( 하위 요소 ) 
    logs/debug.log
    logs/*.c
    
    // logs 폴더 바로 안, 또는 그안의 다른 폴더들 안의 debus.log
    logs/**/debug.log

     


    5 _ git 프로젝트의 변경사항 저장

     - 파일 git에 저장하기

    파일 하나 저장
    git add 파일명
    
    모든 파일 저장
    git add .

     - git add js 를 실행한 결과, js폴더와 폴더 내부의 .js 파일들이 추가되었다.

    프로젝트에서 작업한 것을 버전 별로 따로 저장하고 싶을 때를 제외하고는

    git add . 으로 저장하는 것이 일반적이다.

     

     - 변경사항을 version으로 저장하기

    git commit

    명령어를 실행해서 Vi 입력 모드로 진입,

    i 를 눌러 텍스트 입력 모드로 전환, 저장하고싶은 커밋 메시지를 입력한 후 ESC로 명령어 입력 모드로 전환

    :wq 명령어를 실행해서 저장하고 종료

     

    commit 상태를 확인하고 싶다면 

    git log

    명령어를 입력해서 언제, 어떤 메시지로 저장되었는지 확인할 수 있다.

    First, Second로 Commit한 모습

     - Vi 입력모드로 가지 않고 commit하는 방법

    git commit -m "코밋 메세지"

    ** 해당 방법이 더 편하므로 자주 이용하도록 하자.

     

     - add와 commit을 한번에 [새로 추가된(untracked) 파일이 없을 때 사용 가능]

    git commit -am "(메세지)"

    소스트리에도 동일하게 commit이 추가된 모습

     


    6 _ 과거로 돌아가기

    reset과 revert

    reset : 되돌아갈 시점으로 돌아간 후 시점 이후에 변경됐던 commit들은 삭제한다.

    revert : 되돌아갈 시점으로 돌아가기 위해 해당 시점에서 있었던 변경사항을 반대로 수행한다

    따라서 다른 commit에서 변경되었던 사항들에 영향을 끼치지 않게 사용할 수 있다.

     

    ** revert 시 충돌이 일어날 경우 ( 되돌아가고싶은 시점 이후에 변경사항이 있어서 충돌이 일어나는경우)

    revert 수행이 일시적으로 멈추게 된다. 따라서 사용자가 수동으로 해당 충돌에 대한 대처를 진행 한 후

    git revert --continue 를 실행한다.

     

    reset 명령어
    git reset --hard ( 돌아갈 커밋 해시 )
    
    revert 명령어
    git revert ( 돌아갈 커밋 해시 )

     - 커밋 해시란 ? log 명령어를 실행시켰을 때 뜨는 commit 우측에 나오는 코드

     


    7 _ 여러 Branch 만들기

    Brach : 프로젝트를 하나 이상의 모습으로 관리해야 할 때 차원을 나누는 것과 비슷하다

    ( 하나의 프로젝트 폴더에서 성격이 다른 여러개의 프로젝트로 나누어 관리할 수 있다 )

     

    1) 브랜치 생성 / 이동 / 삭제

    브랜치 생성
    git branch 브랜치이름
    
    브랜치 목록 확인
    git branch
    
    특정 브랜치로 이동
    git switch 브랜치이름
    
    브랜치 생성과 동시에 이동하기
    git switch -c 브랜치이름
    
    브랜치 삭제하기
    git branch -d 브랜치이름

    new1 브랜치를 생성하고 new1브랜치로 이동하기
    new2 브랜치를 생성하면서 이동하기, new2 브랜치 삭제

     - 현재 사용중인 branch는 파란색 글씨의 괄호에 나타난다.

     


    8 _ branch를 합치는 두가지 방법

    merge : 두 브랜치를 한 커밋에 이어붙인다 ( 브랜치의 사용 내역이 남음 )

    rebase : 브랜치를 하나의 브랜치에 이어붙임 ( 한 줄로 깔끔히 정리가 되지만 이어붙일 브랜치는 삭제됨 )

     

    1) merge 사용법

    기준으로 잡고싶은 branch로 이동 ( 예를들면 main 브랜치)

    git merge 붙이고자하는Branch ( new1 이라고 가정 )

    해당 명령어를 실행하면 기준 브랜치와 붙일 브랜치가 합쳐진 새로운 커밋이 하나 생성된다.

     

    2) rebase 사용법

    merge와 반대로 이어붙일 branch로 이동 ( 예를들면 new1 브랜치 )

    git rebase main

    해당 명령어를 실행하면 new1 브랜치의 작업 기록들이 삭제되고 main 브랜치에 작업 기록을 추가시킨다

    이 때 main 브랜치는 new1 브랜치의 작업들이 추가되기 전에 머물러 있게 되기 때문에

    main 브랜치로 이동한 후 git merge new1 을 실행해서 main 브랜치의 시점을 new1 브랜치로 fast-forward 해줄 수 있다.

     

    ** merge , rebase 시 충돌이 일어나 작업이 중단되는 경우

    VS code에서 해당 오류를 확인하고 수정한 후 git add . 로 수정본을 올린 다음 작업을 다시 진행 시켜야한다

    작업을 다시 진행시키고 싶을 경우
    git merge --coutinue
    git rebase --coutinue
    
    당장 충돌을 해결하기 힘들 경우 ( 작업을 중단하고 싶을 때 )
    git merge --abort
    git rebase --abort

     


    9 _ 원격 저장소 사용하기

     

     - github 레포지토리 생성 후 복붙 명령어

    git remote add origin 원격저장소주소
    
    git branch -M main
    -> github 권장 - 기본 브랜치명을 main 으로 설정
    
    git push -u origin main
    -> 로컬 저장소의 커밋 내역들 원격으로 push(업로드)
    -u 또는 --set-upstream
    -> 현재 브랜치와 명시된 원격 브랜치 기본 연결
    
    원격 목록 보기
    git remote
    
    원격 지우기
    git remote remove 원격이름(origin)

     : 로컬의 git 저장소에 원격 저장소로의 연결 추가

    원격 저장소 이름은 보통 origin을 쓰지만 다른 것으로 수정 가능

     

     - github에서 프로젝트 다운받기

    git clone 원격저장소주소

     


    10 _ push와 pull

    git push

     - 작업한 내용을 github에 올린다. 만약 변경된 commit 이 있다면 해당 부분이 github에서도 수정된다.

    git push -u origin main 으로 대상 원격 브랜치가 지정되었기 때문에 가능하다.

     

    git pull

     - 현재 최신 버전의 commit을 받아온다

     

    ** github에 push하고싶으면 원격 저장소에 있는 버전보다 내가 가진 버전이 낮으면 안된다.

    이런 상황일 경우 pull로 먼저 최신화시킨 다음 push를 해야하는데, pull 하는 방법이 두가지 있다

    merge 방식
    git pull --no-rebase
    
    rebase 방식
    git pull --rebase

     - merge 방식은 local과 원격의 어긋난 시간선을 하나로 맞춘 다음 push 하는 방식이다.

     - rebase 방식은 원격에 맞춰서 원격것을 먼저 붙이고 내가 올리고자 하는 부분을 붙이는 방식이라서

    시간상의 진행과정을 보기 더 편하기 때문에 협업시 사용하기 더 좋다

     


    11 _ 원격의 브랜치 다루기

     - push로 브랜치를 업데이트 하고싶을 때 해당 브랜치가 원격 저장소에 존재하지 않는다면

    git push -u origin 브랜치명

    으로 브랜치를 추가하고 push 해야한다.

    브랜치의 목록을 vs code에서 확인하고싶다면

    git branch --all

     

     - 원격의 브랜치를 가져오고 싶다면

    git fetch

    마찬가지로 로컬에 해당 브랜치가 존재하지 않는다면

    git switch -t origin/브래치명

    으로 브랜치를 생성하고 switch해준다.

     

     - 원격의 브랜치 삭제

    git push 원격이름(origin) --delete 원격의브랜치명

    '기타' 카테고리의 다른 글

    유튜브 클론코딩(1)  (0) 2023.03.23
    유튜브 API (메모용)  (0) 2023.03.22
    git hub [ CRLF , LF ] 오류  (0) 2023.03.20
    method 와 function  (0) 2023.03.17
    Nomard) html,css,script 기초(1)  (1) 2023.02.25
Designed by Tistory.