git,github독학1
깃허브 가입한뒤 저장소 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)
개념
clone :원격 저장소(github)을 내 컴퓨터에 복사해온다.
add : 파일의 생성 /변경/삭제를 git 인덱스에 추가(스테이지에 올린다)
내 컴퓨터에서 작업한 파일들을 스테이지에 추가
commit: 파일을 추가하거나 변경 내용을 저장소에 저장하는 작업
커밋을 할려면 저장을 원하는 파일들을 묶어서 커밋 명령을 수행
스테이지에 올라온 파일들을 가지고 내 컴퓨터에 저장(세이브)
커밋 주의사항
1.반드시 한번에 하나의 논리적 작업만을 커밋
2. 커밋 메시지를 잘 적어야한다.
push : 로컬 저장소를 푸쉬해 원격 저장소에 반영(github에 업로드)
커밋들을 원격 저장소에 업로드
변경사항 취소하기
sourcetree에서 파일 상태 click -코드 뭉치 버리기
=> 다시 원래대로 돌아옴
마지막 커밋으로 되돌아가고 싶을 때 사용
현재 작업 중인 브랜치 = 헤드 브랜치
브랜치는 가상의 작업 공간으로 하나의 브랜치로 동작
최종본은 master
두가지를 비교해보고 고민후에 최종적으로 하나 선택
=>병합
git브랜치 병합하기
헤드 브랜치가 master이고 여기서 version2 브랜치를 병합하면 version2의 내용이 master에 반영하게 됨
learn git branch 으로 연습
head가 마스터
병합 발생1
sourcetree에서
main을 checkout하고 version2를 merge 시켰다.
수동으로 고침
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 - 모든 작업 상태 내 변경 사항을 버림
push할려고 하는 원본이 원격저장소보다 과거기 때문에 push할수 없다.
터미널을 열어 git push --force(강제푸시)를 한다.
-단점 리셋을 하면 커밋이 날아간다. 강제 푸시가 지원하지 않는다.
ex2)
이 커밋까지 현재 브랜치를 초기화 (reset)
Hard - 모든 작업 상태 내 변경 사항을 버림
밑에 있는 것을 merge하고 push한다.
merge하면 충돌이 난다.
충돌해결 하기 -내것 선택
정상적으로 push된다.
branch 만들어서 되돌리기
updatebranch에서 한줄 내용 추가 - commit
master checkout - push - 병합(똑같은것을 고쳤기 때문에)
커밋하지 않는 변경사항- 오른쪽마우스에서 충돌해결 - 현재 branch가 master이기 때문에
master(내것) 말고 저장소 것을 사용하여 해결
push할때 문제가 생기지 않는다.
updatebranch 삭제
revert 사용해보기
커밋을 남기고 되돌리는데 revert 유용
revert로 여러 커밋 되돌리기
commit2 로 커밋 되돌리기 click
커밋하지 않는 변경사항 삭제하고 이 커밋까지 현재 브랜치를 초기화
다시 원래대로 돌아옴
commit3 커밋 되돌리기
commit2 커밋 되돌리기
reveert로 여러 커밋 되돌리기 -> 최신부터 순서대로 revert를 반복 적용하면 된다.
+터미널
git revert HEAD HEAD~1
가장 최근 커밋을 되돌려라 순서대로 커밋 되돌리기
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에 돌아가야된다.
test checkout -마우스 오른쪽에서 스태시 적용
불필요한 스태시는 삭제
stash
임시저장하기 좋다.
필요하다면 이전 커밋 덮어쓰기도 가능
Rebase 사용해보기
병합(merge)처럼 두 브랜치를 합칠 때 사용
소스트리에서는 "재배치"라는 명령입니다.
-장점 커밋 히스토리가 깔끔하게 정리된다.
-단점잘못하면 위험하다.이미 원격 저장소에 올라간 경우 + 협업을 하고 있는 경우 위험하다.
rebase branch 만들기 - 내용추가 -commit원래 master있는 곳에 etc branch 만들기 - 내용추가 -commit
master checkout - rebase 병합
수동으로 해결
mergetest branch를 만듬
원격저장소에는 rebase하지말고 로컬저장소에 rebase하자