unnjena
궁금한이야기J
unnjena
전체 방문자
오늘
어제
  • 분류 전체보기 (28)
    • Graduate M.S. (0)
      • Paper Review (0)
      • Project Related (0)
    • Undergraduate (14)
      • ML & DL (9)
      • Otherwise (1)
      • Programming (4)
    • etc. (9)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • network #edge #컴퓨터네트워크
  • Jump_into_the_AI_World
  • Annotation #tool
  • 세바시
  • 인생질문
  • 서비스기획
  • TEST
  • 컴퓨터네트워크 #인터넷
  • 업스테이지
  • AI교육
  • 취준일기
  • #computer_network #컴퓨터네트워크
  • 컴퓨터네트워크 #Traceroute
  • 취준생
  • Python
  • network #delay #loss #throughput #컴퓨터네트워크
  • 지나영교수님
  • AI_Production_Lifecycle
  • 인공지능입문
  • Coding
  • 카공
  • Deepfake
  • Upstage
  • PM

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
unnjena

궁금한이야기J

[github] 관련 명령어
Undergraduate/Programming

[github] 관련 명령어

2020. 11. 20. 11:58

먼저 github.com에서 레파지토리 생성

git init

git add *

git commit -m "message"

git remote add origin 주소

git push origin master


<1강>

​

local repository : 내 로컬 컴퓨터 레파지토리

.git : 버전들이 저장됨

commit : 버전을 생성함

History : 버전에 대한 설명들이 들어있음

remote repository : 원격 저장소. 깃헙 서버에 있는 저장소.

push origin : 내 컴터에서 원격저장소(github.com)로 전송함.

pull : 원격저장소에서 내 컴터로 땡겨옴.

​

협업 방법:

작업->commit->push origin

pull origin -> 작업 -> commit -> push->.....

​

남의 파일 덮어쓰기하면 어떡함? -> 깃이 알아서 처리

​

git log : 버전들의 목록을 보여줌

git status : 어떤 파일이 수정되었는지 알려줌

git commit -am "message" : 버전 추가

git push : 푸쉬

​

​


<2강>

​

git init . : 현재 디렉을 깃 버전관리 시작

working tree : 파일을 만들고 수정하는 곳. 버전으로 만들어지기 전 단계

staging area : 버전을 올리는 곳. 깃이 여기 올라와있는 파일들을 버전으로 만들어서 repository에 넣어줌.

repository : 버전이 저장되어있는곳(= .git)

git add 'filename' : 이 파일을 working tree에서 staging area에 올려라(status 가 committed로 바뀜)

git commit -m "message" : staging area 에서 버전이 생성되어서 repository에 올라감

git log : 버전과 메세지를 보여줌

untracked files : 깃이 모르는 파일(아직 한번도 버전관리 안한 파일)

git log --stat : 어떤 파일이 이 버전에 연루되어있는지 볼 수 있음

git diff : working tree의 파일과 reposit의 마지막 버전간의 다른 점들을 볼 수 있음

git reset --hard : 작업한걸 버리고 마지막버전으로 되돌려줌

git log -p: 뭐가 바꼈는지를 log에서 볼 수 있음

git checkout "커밋id " : 이 커밋id가 가리키는 시점으로 돌아감

git checkout master : 가장 최신상태로 돌아감(★ checkout은 HEAD가 가리키는 곳을 바꿔줌)

git add . : 모든 파일 add

git commit -am : add랑 commit한꺼번에 해줌( 단, untracked file은 추가되지 않음)

git reset --hard "커밋 id" : 해당 커밋아이디가 가리키는 시점으로 감(현재 기존꺼 강력하게? 지워버림)

※ checkout은 현재버전은 지워지지않지만 reset은 현재버전이 지워져버림

​

git revert "commit id" : 기존 커밋을 내버려두고(삭제하지 않고) 그 커밋에서의 변화를 취소함 이때 커밋아이디로는 내가 취소하고싶은 커밋의 아이디 적기. 그러나! 현재 버전에서 옛버전으로 바로 점프할 수 없고 현재에서 역순으로 차례대로 revert하면서 가야함.

​


<3강>

​

git branch : 브랜치의 목록을 보여줌(*이라고 되어있는게 현재 우리가 속한 브랜치)

git branch 'name' : name이라는 브랜치를 새로 만들어줌(현재 브랜치의 내용들이 복붙됨)

git checkout 'brance name' : 그 브랜치가 속해있던 버전으로 돌아감

​

merge : 여러 브랜치가 합쳐진 버전. 브랜치들의 조상은 base라고 함.

o2브랜치의 내용을 master브랜치로 병합하려고 할때, ★마스터 브랜치 상태가 되어야함(git checkout master)

-> git merge o2

​

​

conflict: 각 브랜치에서 같은 파일의 같은 부분을 수정하고 머지했을때 충돌이 발생함

3 way merge: 두 자식 브랜치 중 바뀐 부분만 반영해줌.

​

git mergetool : 병합을 전문적으로 해주는 도구를 불러옴

​

git flow : 유명한 방법들 소개

cherry pick : 예전버전들을 픽해서 부분적으로 병합가능..

rebase : 머지와 비슷한데, 타임라인을 더 깔끔하게 할 수 있음

​

checkout = head를 제어

reset = branch를 제어

​

checkout master : 현재 헤드가 master를 가리키게함(마스터가 가리키는 버전으로 바뀜)

reset master : 다른 브랜치가 마스터가 가리키는 버전을 가리키게함(그 브랜치가 가리키던 버전은 삭제된다는 느낌)

​


<4강>

​

Local Repository ---push----> remote repository (백업)

clone : 완전 같은 버전을 다운받음(복제)

​

http(보안쪽으로는 살짝 부족. 배우기는 쉬움)

ssh(보안쪽으로 좋은데 배우기 어려움)

​

origin이라는 이름의 원격저장소 주소에다가 우리 로컬 저장소를 연결 : ★git remote add origin 주소★

​

git remote : 원격저장소의 이름이 나옴 git remote -v 원격저장소의 이름과 주소가 나옴

​

★ git push -u origin master : origin master라는 브랜치에 푸시가 됨

(git push --set-upstream origin master) : 이거 한번만 입력하면 그 다음부터는 git push만 해도 자동으로 올라감

​

add -> commit -> push 절차 반복함.

​

git clone 주소 : 현재 버전을 그대로 복붙해서 가져옴

​

git pull -> 작업 -> git commit -> git push

​

​


<5강>

​

" git fetch -> git merge FETCH_HEAD " -> commit -> push : git pull과 똑같은 일이 일어남

​

git pull = git fetch; git merge origin/master

​

git fetch를 하면 .git/FETCH_HEAD 를 만듬. 원격저장소에 가장 최근에 패치한 내용을 가지고 있음

그걸 origin /master와 머지 시켜줌.

git fetch는 정확하게 말하면 원격저장소를 가지고만 오는것임. 결합은 X.

​

이걸 쓰는 경우는 무작정 합치기에는 조심스러운 경우에 쓴다.

​

git patch : 원격저장소에 대한 권한이 없는 사용자가 새로운 코드를 반영하고 싶을 때 쓸 수 있음.

​

git format-patch "버전" : 현재 가장 최근 버전과 "버전"과의 차이점을 patch라는 파일에 기록하여 생성함.

​

git am -3 -i *.patch : 패치를 3 way merge로 반영함.

​

pull request : 내가 작업한 내용을 원격저장소로 당겨주십시오

​

Fork : 그 사람의 계정으로 해당 저장소가 복제됨. 그럼 이 저장소는 그 사람이 마음대로 수정할 수 있게됨(원본은 X)

​

fork를 하게되면 compare랑 pull request라는 메뉴가 생김

compare누르면 오리지널 저장소와 사용자가 수정한 내용의 저장소를 비교해줌.

여기서 create pull request를 누르면 원본 계정한테 내 내용을 pull해달라고 요청함.

​

그럼 원본 저장소에서 pull requests메뉴에 들어가면 거기 본인이 받은 pull request를 볼 수 있음

-> Merge pull request를 누르면 합쳐짐. 즉, 요청한 내용을 원본과 병합함.

​

​


<6강>

​

cherry pick: 다른 브랜치에 있는 버전이 만들어졌을 때 생긴 "변화"만을 적용하겠다(병합해서 새 버전 만듬)

git cherry-pick '버전'

​

base ; 두 브랜치의 공통 조상

rebase ; 조상을 바꾸겠다.

​

git rebase topic : topic 브랜치가 현재 가리키고 있는 버전으로 base를 바꾼다

​

merge : 브랜치들을 합쳐서 새 버전을 만듬

rebase : 브랜치의 베이스를 옮겨서 가지 형태가 아닌 linear한 형태로 그래프를 바꿔줌

단, push한 이후에 rebase하면 안됨!! 엉망진창될수 있음. 로컬에 있을때만 해야됨

그리고 merge와 rebase의 결과는 궁극적으로 같음. 그러나 과정이 다를뿐.

​

​

​

​


추가로 참고하면 좋을 사이트

https://sunnykwak.tistory.com/97

Git 관련 학습 자료 모음

Git, GitHub 초보자를 학습 사이트 및 자료 모음. (제보해주시면 추가합니다.) Git - 생활코딩 : Git 독학을 위한 강의/학습 사이트. GitHub 실습 교육 : GitHub 과 SourceTree 를 이용한 실습 교육. 누구나 쉽게..

sunnykwak.tistory.com

https://github.com/corean/git-study

[출처] github 정리|작성자 박나깨

'Undergraduate > Programming' 카테고리의 다른 글

[python] enumerate 함수  (0) 2020.05.09
[coding test] 2019 카카오 개발자 겨울 인턴십 문제  (0) 2020.05.09
[Python] 리스트(list)에서 '조합' 찾기(product,permutations,combinations)  (0) 2020.05.08
    'Undergraduate/Programming' 카테고리의 다른 글
    • [python] enumerate 함수
    • [coding test] 2019 카카오 개발자 겨울 인턴십 문제
    • [Python] 리스트(list)에서 '조합' 찾기(product,permutations,combinations)
    unnjena
    unnjena
    모든 궁금증과 그 해답을 담는 공간 Github : https://github.com/JaeheeRyu

    티스토리툴바