[Git] git & github 기초 연습

Joy·2020년 5월 13일
3

기타

목록 보기
5/12

src: youtube 얄팍한 코딩사전 <가장 쉬운 git 기초>

혼자 작업 ver.

git 사용 이유

폴더의 수정, 변경 등 폴더 내 파일의 상태를 과거로 돌릴 수 있음.
평행 우주 (branch)를 만들어 버전별로 작업할 수도 있고 우주들 간에 병합도 가능.

사용법

  1. command line interface 로 명령어 입력 (이거에 익숙해지는게 좋음)
    or
  2. 마우스로 쓸수 있게 GUI로 만들어진 소프트웨어 (source tree 등)

환경구축

  • git 설치
  • IDE 설치 (vscode 등)
  • (필수아님) 소스트리 설치

폴더 만들기

작업 폴더 만들고 vs코드로 열어주기.
폴더 안에 작업 파일들 생성.

폴더를 git이 관리하도록 만들기

  • 윈도우: CMD 나 powershell에서
  • 맥: 터미널에서
    폴더 경로 찾아 들어가야함.

VSCode로 폴더를 열었다면, ctrl + ` or vscode에서 new terminal 열어주기 -> 하단에 터미널이 열리고 현재 폴더로 이미 이동되어 있음.

git init
빈 git 저장소 만들기 - 폴더를 git의 관리 하에 들어가게 하기.

git config --global user.name "(내 이름)"
git config --gobal user.email "(메일주소)"
이름, 이메일 등록하기 - 제어하는데 필요한 정보 입력

현재 시점 저장하기

= 타임 캡슐에 묻기

타임캠슐에 담기

git status
git의 관점에서 상태 확인 - 아직 담기지 않은 파일 등 볼 수 있음 (untracted)

git add -A
타임캡슐에 모두 담기 - stage 하기 (add 하는 걸 말함)

git commit -m "설명"
묻기. 설며도 붙여주기.

git log
캡슐 정보랑 메시지 확인할 수 있음. history

!! 터미널 맨 아래에 입력줄이 없어진다면, vi에디터가 실행중인 거니까 :q 눌러 빠져나오기

과거로 돌아가기

Reset 과감한 방법: 돌아갈 과거 이후 행적은 지우기

log에서 돌아갈 시점 찾아서 일련번호 앞 6자리 복사
git reset (번호) --hard
history 에서 사라짐. 미래로 갈 수 없음.

Revert 소심한 방법 : ㅇ

git log로 번호 확인. 돌아갈 시점 말고 취소할 시점 찾기
git revert (번호)
커밋 메시지 작성이 뜨면 명령어 :wp 입력 - 그대로 저장하겠다는 뜻.
reset처럼 시점 이후가 지워진게 아니고 뒤에 새 캡슐이 묻힘.

Branch

브랜치 만들기
git branch branchname

브랜치 확인
git branch

브랜치 넘나들기
git checkout branchname

새로 만들어진 브랜치는 원 브랜치(checkout 돼있던)의 현 상태(파일 등)을 그대로 가져옴.

작업 후 add , commit으로 캡슐에 넣고 묻어야 함.

병합 Merge

다른 우주에서 가져오기

타 브랜치에서 변화를 마스터 브랜치로 가져오기

마스터 브랜치로 돌아오기
git checkout master
머지할 명령어 입력
git merge branchname
엔터

윈도우는 바로 적용.
맥은 커밋 메시지 작성 vi화면 나옴 - 그대로 쓰도록 저장하고 나가기 :wp 입력

작업내역 시각화 확인하기
git log --graph --all --decorate

!! 병합할 두 브랜치에서 같은 부분이 수정되어있으면 병합이 매끄럽게 될 수 없음 - conflict 가 나기 때문에 수정해줘야 함.

Rebase 재배치

여러 갈래들이 복잡한 와중에 한줄로 정리하는 기능.

브랜치 삭제

git branch -D branchname

github

협업하기 ver.

클라우드 처럼 git을 사용해서 소스를 업로드해서 저장하고 다른 개발자들과 공유할 수 있는 git 저장소. 대표적으로 github

기본

위와 똑같이, 폴더를 만들고 git init
파일을 생성, 저장하고 add , commit 해주기

github

깃헙에서 레파지토리 만들기 - 깃으로 관리되는 프로젝트 폴더 하나가 원격으로 저장되는 공간

깃헙에 소스 올리기

git status 로 현재가지 상황들이 모두 커밋됐나 확인 : 빠진게 있으면 add해서 커밋하기

깃헙에서 만든 레파지토리를 원격 레파지토리로 추가 "이미 있는 레파지토리 올리기"

…or push an existing repository from the command line

git remote add origin https://github.com/joygoround/gitpractice.git
git push -u origin master

뒤에 url을 origin이라는 이름의 remote원격 저장소로 설정하겠다.
오리진은 다른 이름 사용 가능. 기본값으로 사용되는 이름.
push : 폴더의 현 브랜치에 커밋된 내용들을 오리진이름의 원격 레파지토리에 master라는 이름의 브랜치에 올리겠다

해주고 github 정보 입력해주면,

"Branch 'master' set up to track remote branch 'master' from 'origin'."

master 브랜치가 origin이라는 원격의 마스터 브랜치를 추적한다.

로컬에서 푸시한 파일이 올라와 있음.

git remote 를 입력하면, 이 전에는 아무것도 없었지만이제는 추가한 원격 레파지토리 이름이 나옴.

그 후 변화를 푸시하려면,

git push origin master 이렇게 바로 해주면 됨.

다루지 않을 파일 설정 .gitignore

프로그래밍 하다보면 git으로 관리, github에 올릴필요 없거나 그러면 안되는 파일 있을 수 있음.

  • 깃이그노어 파일 생성
    프로젝트 파일들 맨 위에 .gitignore 파일 생성 : 숨김파일로 지정이 됨.

  • 파일 깃이그노어에 넣기..

숨길 파일 만들고 git status로 확인하기

.gitignore 파일 안에 숨길 파일 이름 쓰고 저장 후 status 확인 하면 없어진걸 볼 수 이씀.

원격 협업..

깃헙에서 소스 내려받기 clone

컴터 1에서 한 작업을 2에서 하려면....

프로젝트 폴더가 들어갈 위치를 (새폴더) vscode로 열고 터미널 열기

깃헙 레파지토리 페이지에서 clone or download 누르고 주소 복사

git clone 주소복사한거

vscode가 상위 폴더에 있는데, 그 폴더안으로 들어가려면 터미널에
cd .\폴더명\

이렇게 들어가면, git log로 해당 프로젝트 내역 쭉 볼 수 있음.

작업 주고 받기

컴터 2에서 작업을 다 하고,

add, commit 해주기 - 협업시에 뭐가 달라졌는지 알려줘야 해.

git push 하기 -> 깃헙에 올라옴.

fetch

컴1에서 git fetch, git status 를 하면 원격 오리진에 커밋이 behind라고 나옴. 즉, 깃험에서 다운받을내용이 있다는 뜻.

받기
git pull (원격명) (브랜치명)
커밋내용까지 동기화 됨.

이쪽에서 작업후 커밋하고 푸시

깃험에 올라옴.

컴2 : 풀로 당겨오면 컴1에올린거 동기화 가능함.

브랜치 주고받기

브랜치 만들고 넘어가기

git checkout -b 브랜치명

로컬에서 브랜치 만들면 원격저장소에도 push 해줘야 함.

git push origin 브랜치명

브랜치 확인하기

컴2에서 컴1이 만들 브랜체 확인.

git branch 로컬 브랜치만 확인가능
git branch -a 로컬, 원격 다 볼 수 있음.

git fetch 로 깃험 소식 받아오고 다시확인하면 나옴.

이걸 컴2 로컬로 가져오기
git checkout -b my-idea origin/my-idea
로컬에 my-idea이름으로 브랜치를 만들어서 origin/my-idea 이 원격의 이 브랜치 내용을 받아오고 그 브랜치로 건너간다
작업 후 깃헙에 push

컴1에서, fetch로 원격상황 확인하면 어디 브랜치에ㅓ 풀 받을 커밋이 있다고 뜸. 풀 받으면 완료.

conflict 충돌 해결하기

만약 컴1에서 A파일을 ㅅ정하고 github에 얼렸는데,
컴2에서 A파일의 같은 부분을 수정하고 푸쉬하면 에러. -- 풀 안해서.
풀하려고 하면 에러 -- 같은 부분이 충돌하니까. status 보면 확인 가능

수정해서 저장. 그 후 add, commit , 후 푸시

원격 브랜치 삭제

로컬 브랜치 제거 : git branch -D branchname
원격 브랜치 제거: git push -d origin(원격명) my-idea(브랜치명)

기타

터미널에 커서표시가 없어서 명령어 입력못할 때 : q 눌러서 나가기

profile
roundy

0개의 댓글