독학/git,github

git,github독학1

나아눙 2022. 8. 23. 12:30

깃허브 가입한뒤 저장소 create 

 

깃 가입후

검색창에 git bash 로 들어가기 

결과

설정 완료

[무료] Git과 GitHub 시작하기 - 인프런 | 강의 (inflearn.com)

 

[무료] Git과 GitHub 시작하기 - 인프런 | 강의

배우기 어려운 Git의 사용법을 쉬운 Gui 프로그램인 SourceTree를 통해 익혀봅시다., - 강의 소개 | 인프런...

www.inflearn.com

잘 되지 않아 이 강의를 듣기로 했다.

 

토큰 생성

권한 지정 후 토큰 생성

 

settings -> develop settings ->personal access tokens

repo workflow gist user delete_repo check한다.

토큰이 생성되고 메모장에 저장한다.

기억: git은 인증에 git credential manager를 사용하고 있다.

 

저장소를 생성 - ADD a README file , ADD .gitignore , Choose a license:MIT License

 

git bash

git clone ysycoding/githun: 깃헙 첫번째 저장소 (github.com) ->저장소 복사

로그인이 잘 됐다는 뜻

소스 트리 설치 및 클론

설치 완료

clone에서 githun2 클론

도구-옵션-인증-추가-OAuth로그인

내  githun계정에서 altlassian이라는 다른 사이트한테 권한을 주겠다.

 

CLI보다 소스 트리로 쓰는게 편하다.

Basic는 토큰을 이용한 인증이다.

 

GIT CLI 사용자 변경

git confih ctrfrnyial.username "이메일"

git push

 

github 저장소 생성 

github 저장소 클론

내 컴퓨터의 내 문서 아래에 생성된 프로젝트 디렉토리에서 파일 생성 및 작업 완료

atom으로 hello.html 작성

커밋할 파일들 선택해서 스테이지에 올리기(add)

sourcetree로 스테이지 올리기 

커밋하기(commit)

푸시하기(push)

push click
올려져있는 것을 확인할수 있다.

개념

clone :원격 저장소(github)을 내 컴퓨터에 복사해온다.

 

add : 파일의 생성 /변경/삭제를 git 인덱스에 추가(스테이지에 올린다)

내 컴퓨터에서 작업한 파일들을 스테이지에 추가

 

commit: 파일을 추가하거나 변경 내용을 저장소에 저장하는 작업

커밋을 할려면 저장을 원하는 파일들을 묶어서 커밋 명령을 수행

스테이지에 올라온 파일들을 가지고 내 컴퓨터에 저장(세이브)

 

커밋 주의사항

1.반드시 한번에 하나의 논리적 작업만을 커밋

2. 커밋 메시지를 잘 적어야한다.

 

push : 로컬 저장소를 푸쉬해 원격 저장소에 반영(github에 업로드)

커밋들을 원격 저장소에 업로드 

 

변경사항 취소하기

sourcetree에서 파일 상태 click -코드 뭉치 버리기 

=> 다시 원래대로 돌아옴

마지막 커밋으로 되돌아가고 싶을 때 사용

 

 

version2에서 현재 작업하고 있다.

현재 작업 중인 브랜치 = 헤드 브랜치

브랜치는 가상의 작업 공간으로 하나의 브랜치로 동작

최종본은 master

commit하고 난후

두가지를 비교해보고 고민후에 최종적으로 하나 선택

=>병합

 

git브랜치 병합하기

헤드 브랜치가 master이고 여기서 version2 브랜치를 병합하면 version2의 내용이 master에 반영하게 됨

 

learn git branch 으로 연습

head가 마스터

 

똑같은 파일을 편집할때 두 commit이 충돌이 날 가능성이 있다.

병합 발생1

sourcetree에서 

main을 checkout하고 version2를 merge 시켰다.

충돌이 났다.

 수동으로 고침

master가 version2와 합쳐짐

merge한 후 version2가 필요없어서 삭제

 

version3 내용추가 - commit - 

vesion3 병합하기(click)- push(master)

master가 version3로 올라감

version3 삭제

 

병합 발생2

version4 브랜치를 만들고 version3 checkout

atom에서 충돌이 안날려면 version3.md를 만든다.

version4에서 병합 -> version4에 master가 올라감

version.md 병합 (fast foward 상황아니고 실제로 병합이 일어남) ->다른 파일이기 때문에 충돌 안난다.

 

git pull

pull:github의 master가 내 로컬저장소의 master보다 서버에 저장되어있다.

fetch + merge

 

Merge brand 'version'에 conflict 브랜치 생성 

conflict checkout - 병합 해결 설명 추가(pull) - conflict 브랜치 커밋

master checkout - 기분 추가 -

master에다 conflict를 merge

충돌이 일어남
새로 생김

일반적인 해결 방법

 

-에디터를 이용한 해결

atom에서 수동으로 고치기

commit message는 그대로 쓰기

 

되돌리고 싶을때 마우스 오른쪽에서 이 커밋까지 현재 브랜치를 초기화한다.

모든 작업 상태 내 변경 사항을 버림 

 

-내것 또는 저장소 것 선택하기

마우스 오른쪽에서 저장소것을 사용하여 해결 - commit

마우스 오른쪽에서 내것을 사용하여 해결 - commit

 

이전 커밋으로 되돌리기

이 커밋까지 현재 브랜치를 초기화 -> reset

Hard - 모든 작업 상태 내 변경 사항을 버림 

원격 저장소에 내용이 없으면 모두 사라진다.

다시 복구할수 없다.

 

ex1)

되돌리기 내용 추가(reset) - commit - push

이 커밋까지 현재 브랜치를 초기화 -> reset

Hard - 모든 작업 상태 내 변경 사항을 버림

 

되돌아감

다시

되돌리기 내용 추가(reset) - commit - push

이 커밋까지 현재 브랜치를 초기화 -> reset

Hard - 모든 작업 상태 내 변경 사항을 버림

 

puu하고 push가 둘다 생김
push를 누르면 에러가 난다.

push할려고 하는 원본이 원격저장소보다 과거기 때문에 push할수 없다. 

강제 푸시 안됨

터미널을 열어 git push --force(강제푸시)를 한다.

-단점 리셋을 하면 커밋이 날아간다. 강제 푸시가 지원하지 않는다.

 

ex2)

이 커밋까지 현재 브랜치를 초기화 (reset)

Hard - 모든 작업 상태 내 변경 사항을 버림 

밑에 있는 것을 merge하고 push한다.

merge하면 충돌이 난다.

충돌해결 하기 -내것 선택

정상적으로 push된다.

 

branch 만들어서 되돌리기

master에 내용 추가후 updatebranch 만들기

updatebranch에서 한줄 내용 추가 - commit

master checkout - push - 병합(똑같은것을 고쳤기 때문에)

커밋하지 않는 변경사항- 오른쪽마우스에서 충돌해결 - 현재 branch가 master이기 때문에

master(내것) 말고 저장소 것을 사용하여 해결

저장소 것 선택

push할때 문제가 생기지 않는다.

updatebranch 삭제

 

revert 사용해보기

master전에서  revert branch를 만들고 master checkout-revert 병합
rever test용 내용 추가 -commit -오른쪽마우스 커밋 되돌리기 click
다시 revert 내용이 생겨났다.

커밋을 남기고 되돌리는데 revert 유용

 

revert로 여러 커밋 되돌리기

commit2 로 커밋 되돌리기 click

충돌이 일어남

커밋하지 않는 변경사항 삭제하고 이 커밋까지 현재 브랜치를 초기화

다시 원래대로 돌아옴

commit3 커밋 되돌리기

쌍이 돼서 없어진거 마찬가지

commit2 커밋 되돌리기

 

reveert로 여러 커밋 되돌리기 -> 최신부터 순서대로 revert를 반복 적용하면 된다.

 

+터미널

git revert HEAD HEAD~1

               가장 최근 커밋을 되돌려라 순서대로 커밋 되돌리기

:wq 두번

 

commit3 commit2를 동시에 되돌림

master checkout - test 강제 삭제

 

브랜치와 스태시

test라는 브랜치 생성

test.md에 내용추가 - commit 

test checkout - test.md에 내용추가2 - master checkout하니깐 에러가 생김

반드시 master에 돌아가야된다.

이럴때는

작업 중인 내용의 임시 저장 

1. 브랜치1에서 일단(임시) 커밋을 한다. 

커밋을 한다.

2. 브랜치2로 체크아웃하고 볼일을 본다.

3.다시 브랜치 1로 되돌아 온다.

4. 1의 작업을 이어서 마무리 한다.

5. 커밋 덮어쓰기 (commit --amend) 를 한다.

옵션에서 마지막 커밋 정정

의미 없는 커밋 -> 의미 있는 커밋

6.(옵션) 필요하다면 (push --force)를 한다.

test 커밋 - 이 커밋까지 현재 브랜치를 초기화 -의미 없는 커밋 수정 - committest push

 

의미 없는 커밋 ->의미 있는 커밋으로 수정 - commit(마지막 커밋 정정)서로 다른 commit 두개 보이면 git push --force를 한다.

브랜치 test 삭제 - 오른쪽 마우스에서 브랜치 - 브랜치 삭제(origin/test)

 

stash를 이용해서 같은 작업 하기

stash : 다른 브랜치로 체크아웃하기 전에 현재 작업내용을 저장하는 임시 저장소

유용하니 잘 사용

 

1.stash를 만든다.

2. 이때 새로운 파일이 있었다면 일단 인덱스에 추가한다.

3. 체크아웃한다.

4. 되돌아온다.

5. stash를 pop한다.

6. 보통 커밋을 새로 생성한다.

 

test2라는 브랜치 생성

hello.md에 내용추가 - commit 

test checkout - hello.md에 내용추가2 - master checkout하니깐 에러가 생김

반드시 master에 돌아가야된다.

 

stash를 만듬
stash안에 있음
master에는 의미 없는 내용이 사라짐

test checkout -마우스 오른쪽에서 스태시 적용

적용 후 의미없는 내용 추가가 생김

 

의미 있는 내용 추가 - commit
한번도 작업하지 않는 파일은 스태시가 안된다. 하지만 스테이지에 올려주면 가능

불필요한 스태시는 삭제

 

stash

임시저장하기 좋다.

필요하다면 이전 커밋 덮어쓰기도 가능

 

Rebase 사용해보기

병합(merge)처럼 두 브랜치를 합칠 때 사용

소스트리에서는 "재배치"라는 명령입니다.

 

-장점 커밋 히스토리가 깔끔하게 정리된다.

 

-단점잘못하면 위험하다.이미 원격 저장소에 올라간 경우 + 협업을 하고 있는 경우 위험하다.

 

rebase branch 만들기 - 내용추가 -commit원래 master있는 곳에 etc branch 만들기 - 내용추가 -commit

 

master checkout - rebase 병합

master와 rebase 병합
etc도 병합 하지만 충돌이 일어남

수동으로 해결

 

mergetest branch를 만듬

rebase checkout 하여 mergetest와 etc 와 병합 한 후 mergetest으로 재배치하면 충돌 해결후 다시 재배치

원격저장소에는 rebase하지말고 로컬저장소에 rebase하자