Git/Github 입문

박종호·2024년 1월 4일
0

Git/Github

목록 보기
2/3

근데, Git은 왜 쓰지?

같은 기능을 쓰다보니, 동료와 같은 작업을 실행해 업데이트 했을 때, 충돌하거나 겹치거나 지워지는 가능성을 최소화하기 위해 사용합니다!

그럼 Github은?

돌아와서, Git의 구조를 알아봅시다!

내가 작성한 코드가 바로 올라가는게 아니라, git add를 통해 스테이지로 올리고, git commit을 통해 로컬 저장소로 올립니다. 여기까지는 내 컴퓨터에 한정되어 있는 작업이고! git push를 통해서 원격 저장소로 이동하게 됩니다. 다른 사람들도 내 코드를 볼 수 있는거죠! 그럼 반대로, 다른 사람들이 작성한 코드들은 git clone 명령어를 통해서 복제해오고, git pull 명령어를 통해서 소스코드까지 그대로 가져올 수도 있습니다. 그럼 git fatch는 뭐지…? 이건 소스코드까지 받아올 수는 없다. 단순히 브랜치등 어떤것이 변경 됐는지만 받아온다!

(아니 누구세요?)

CLI : 명령줄 인터페이스

GUI : 그래픽 유저 인터페이스

워킹 디렉토리 : 내가 작업하는 현재 시점!

원격 저장소 : 다른 사람들과 함께 공유가 가능한 저장소

로컬 저장소 : 내 PC에서만 저장되는 저장소

아까부터 브랜치 브랜치 하는데 대체 뭐지…?

분기점.

즉 메인 브랜치로 작업하던 도중, 각각의 브랜치를 통해서 급한경우 다른 브랜치를 이용해 핫픽스를 할 수 있고, 하나의 브랜치로 merge가 가능

ㅇㅇ

ㅇㅇ2

최신 버전에서는 switch라는 명령어로 변경됨.

자, 이 것들을 알아야 하는 목적은 git과 github을 효율적으로 사용하기 위해서고.

Git의 역할

다음과 같은 명령어로 소스 코드를 관리하는 역할을 합니다.

  • 소스 병합 (merge, rebase)
  • 소스 리비전 관리 (reset, commit, branch)
  • 소스 릴리즈 (push)
  • 소스 태깅 (tag)
  • 소스 변경사항 검토 (diff, log)

GUI인 sourcetree를 통해 소스코드를 커밋해보았다!

revert ‘initial commit’ 이거 뭔데…. 모르겠어 진짜로

[그래서 알아보았습니다.]

이건 터미널로 스테이지에 올리는 것!

1

Untitled

2 이렇게 작성하고 esc버튼을 누른 후

:wq를 작성해야 저장하고 나갈 수 있다!

  • (참고) Vi 입력 모드
작업Vi 명령어상세
입력 시작i명령어 입력 모드에서 텍스트 입력 모드로 전환
입력 종료ESC텍스트 입력 모드에서 명령어 입력 모드로 전환
저장 없이 종료:q
저장 없이 강제 종료:q!입력한 것이 있을 때 사용
저장하고 종료:wq입력한 것이 있을 때 사용
위로 스크롤kgit log등에서 내역이 길 때 사용
아래로 스크롤jgit log등에서 내역이 길 때 사용
  • init commit 입력한 뒤 저장하고 종료

만약 커밋 메시지를 함께 작성하고싶다면 다음과 같은 명령어를 사용합니다.

git commit -m “init commit”

아래 명령어, 혹은 GUI로 확인합니다.

git log

  • 로그를 모두 확인했다면 q를 입력하여 종료할 수 있습니다.

워킹 디렉토리와 현재 상태와의 차이를 보여주는 것!

Git에서 과거로 돌아가는 두 방식

  • reset : 원하는 시점으로 돌아간 뒤 이후 내역들을 지웁니다.
  • revert : 되돌리기를 원하는 시점의 커밋을 거꾸로 실행합니다. 우리가 흔히 사용하는 “실행취소”를 생각하면 됩니다.

먼저 reset을 해보죠?

hard로 갈 수록 더 빡세다고 볼 수 있죠? reset은 commit history는 남지 않습니다. revert는 남습니다.

하지만 다 지워버리면 너무 슬프잖아…

그럴 줄 알고 .git 폴더를 미리 복사해서 백업해 놓았다구 ^^@

그럼 다시 되돌아오고 최근 커민한 replace hyundai to porsche…(파일이름 오타났죠?)로 돌아왔습니다!

revert를 하고싶다면?

CRI에서 git revert ‘commit id’ 작성!

같은 라인에 revert가 작성 되었을 때, 충돌이 일어난다면 어떻게 대처를 할지 테스트 해보자!

뭔데;

메모장에 a,b,c를 순서대로 작성하며 작성 할때마다 커밋 하고, 이후에 ab가 작성된 커밋을 revert하면 이런 오류가 나온다. 이후 A파일을 열면?

<<<<<<HEAD는 우리가 지금까지 작성한 내용

commit2는 우리가 revert하려는 대상이 충돌이 난 건데.

여기서 편집을 해도되고?

내것을 이용해 해결은 지금까지 작성한 abc로 선택하겠다는 것

저장소를 이용해 해결은 a만 남기겠다 이거죠?

아니? 나는 그냥 새로 만들고싶어 그럼 새로 작성한 다음 ‘해결된 것으로 표시’

버튼을 누르면 수정한 버전으로 커밋이 된다!

revert는 실행 취소라는 개념인데, 완전히 다른 내용이면 (같은 라인이 아닌 내용이라면) 실행을 취소하더라고 충돌할 일이 없지만, 같은 라인에서 수정된 내용을 반대로 되돌리는 작업을 진행하던 중 충돌이 일어난거죠.

Branch

지금 내가 만든 branch에 commit을 했다면?

진도 따라가느라 설명 생략;;

이제 merge를 해볼건데?

현재 브랜치로 이동해서 merge 해올 브랜치에 우클릭을 해보면 병합 끝!

rebase

머지와 반대로 가지를 하나로 이어붙이는 방법인데?

(메인브런치로 이동만 한거임)

github에서 새로운 브랜치를 만들었고, 이걸 내 로컬 저장소로 가져올건데

패치를 통해 원격브랜치를 가져오고 이걸 다시 로컬 브랜치로 병합!

이걸 다시 commit을 추가해 push 해보면?

최근에 수정됐고 활성화 되었다는 걸 확인할 수 있다!

사실 git과 github는 조금 더 숙달이 필요할 것 같다…😂😂

오늘의 과제는 도서관에 가서 책 빌려오기!

친구가 추천한 학습 방법인 CRI위주로 학습해보자!

profile
Hey🖐️

0개의 댓글