-
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
명령어를 입력해서 언제, 어떤 메시지로 저장되었는지 확인할 수 있다.
- Vi 입력모드로 가지 않고 commit하는 방법
git commit -m "코밋 메세지"
** 해당 방법이 더 편하므로 자주 이용하도록 하자.
- add와 commit을 한번에 [새로 추가된(untracked) 파일이 없을 때 사용 가능]
git commit -am "(메세지)"
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 브랜치이름
- 현재 사용중인 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