git과 github공부

AeRi Lee·2020년 2월 11일
0

https://velog.io/@devzunky/TIL-7%EC%9D%BC%EC%B0%A8-Git-Basic-5-l0k1eiwchm
헷갈리면 들어가서 공부 더 할 정리왕 블로그!

원하는 수정사항만 들어갔는가

내가 원하는 파일만 들어갔는가

잘 동작하는가 확인하기


  • Git/ GitHub 이란?

    Git 은 VCS(Version Control System) 즉 소스코드를 효율적으로 관리하기 위해 사용되는 버전 관리 시스템이다. 여기서 version은 소스코드(sourcecode) 파일의 version을 뜻한다.
    즉 소스코드(soruce code)의 변경사항 내역을 관리하는 시스템. 참고로 소스코드란 server.js 같은 코드 파일이다.

github란 VCS에서 개발자간의 협업을 위해 중앙 서버가 있는데
github는 이러한 중앙서버의 역할.
github를 안쓰면 우리가 직접 서버를 띄우면 되는데 github가 더 싸고 편리한 기능을 제공하니까 github를 사용하는 것이다.

  • repository 생성 + 관련 명령어(git init, git add remote, git remote -v)

    git init = 새로운 git 저장소를 만든다.
    git add remote = repository 주소를 넣어준다.
    git remote -v = 지금 repository가 어디인지 알려준다.

  • local repository / remote repository

  1. remote repository
    파일이 remote repository전용 서버에서 관리된다.
    여러 사람과 함께 공유하기 위한 저장소이다.
    (공유 클라우드 개념)

2-1. local repository
내 pc에 파일이 저장되는 개인 전용 저장소

평소에는 본인의 pc의 local repository에서 작업하다가 소스코드를 공개하고 싶을 때, Remote repository에 업로드 한다.=push
Remote repository에서 다른 사람의 소스코드를 자신의 local repository로 가져올 수 있다=pull

2-2 local repository만들기
1. 새로운 저장소 git init
2. 이미 존재하는 remote repository를 local repository로 복사해오는 방법 git clone

1번 해보기

$ mkdir first-directory
$ cd first-directory
/first-directory $ git init

이 3줄을 마치면 first-directory에 .git이라는 디렉토리가 생성된다.
local repository하나 만든거다.

2번 해보기

$ git clone url 폴더이름

work tree 와 index

내 pc 저장소 폴더 = work tree
저장소에 업로드(commit)전에 index라는 공간에 등록 = staging
staging한 파일을 저장소에 업로드하는 것을 commit이라고 표현한다.

work tree--(staging)--->Index--(commit)-->repository

staging이 필요한 이유= 수정한 파일 10개 중에 7개만 저장소에 업로드 하고 싶을 때 7개만 선택하는 작업이기 때문

staging 명령어
$ git add 파일이름 를 이용해서 파일을 Index에 등록

여기에서 깨달은 것!!!

git add .->현재 수정된 모든 파일들을 Index에 등록하겠다.
git add . 경로/파일이름->작성한 파일만 Index에 등록하겠다.


변경 이력 확인하기

$ git log 를 쓰면

누가 언제 어떤 내용으로 commit했는지 알 수 있다.

git status->modified, unmodified, staged 등 상태를 확인할 수 있다.

  • git clone vs. git pull 개념 및 차이점

우선, 내가 local repository -> remote repository 를 push
누군가의 코드를 remote repository -> local repository 를 pull

프로젝트 다운받을 때, (처음에!!)clone을 통해 모든 코드를 내 컴퓨터로 가지고 온다
clone으로 다운받고 누군가가 수정해서 다시 올렸다. 다른 누군가가 그 최신 코드로 작업을 해야하니까 코드 가지고 오는 것 = pull
같은 라인에서 두 명이 수정 뒤에 올렸을 때 충돌이 일어나는데 이 충돌도 local에서 일어나니까 다른 사람한테 피해가 가진 않는다

local repository만들 때 init을 사용했었는데,
clone을 사용해 local repository를 생성해보자.

$ git clone url cloneTutorial

를 실행하면 현재 폴더에 clone Tutorial이라는 폴더명으로 remote repository가 복제된다.


  • branch의 개념 + 관련 명령어(branch 생성, branch 이동, branch 제거)

    feature branch -> 기능을 만드는 branch
    branch는 독립적으로 작업을 진행하기 위한 개념이다. 각각의 branch는 다른 branch의 영향을 받지 않기 때문에 동시에 여러 작업을 할 수 있다.

이렇게 만들어진 branch는 다른 branch들과 Merge하며 다시 새로운 branch로 모을 수 있다.
local에서 merge. 모든 일은 local에서 일어나고 github는 받아주기만 함

  • master branch
    저장소를 처음 만들면 git은 'master'

따로 branch를 만들어 사용하지 않는 이상 master branch를 사용하게 된다.

  • master branch말고 다른 branch에서 작업하고 싶을 때.

checkout명령어를 사용한다.
그리고 아직 commit하지 않은 변경 내용이 index와 work tree에 남아있는 채로 checkout 하면 그 변경 내용들은 기존 브랜치가 아닌 전환된 branch에서 commit할 수 있다.

이 때, 변경 내용 중에 전환

  • git staging 설명 + 관련 명령어(add, commit, push)
  • conflict는 언제, 왜 발생하는가? 어떻게 해결하는가?

같은 파일 내에 같은 라인을 건들이게 되면 충돌이 일어나면서 git이 선택권을 준다. 어떤 파일로 덮을 것인지! 선택해서 다시 올려야 한다. 주로 충동한 두 개발자가 만들어서 같이 상의한 뒤 고쳐서 올려야 한다.
이 모든게 local에서 일어난다.
\
내가 master branch에서 처음 들고 왔을 때 master의 상태를 base 라고 함
충돌났을 때 더더욱 조심해야해....

modified면 꼭 staged를 꼭 하고 나서 commit해야한다,
\

-지훈님 세션-
tig 좋아용 q누르면 나갈 수 있다

git branch feature/이름
feature branch 이름 지을 때 camelCase아니고 소문자로... 또는 -이거 붙여서.

git branch 누르면 feature/이름 들 다 나옴. 나올 때 q누르면 됨

전환할 때 git checkout feature/login
누르면 branch가 전환이 된 것이다.
새롭게 가지가 뻗어나와 분리가 된 것이다.
merge시키지 않는 이상 여기의 일이 되는 것이다.

vim abc.js = 파일 만들기

Tip

git push -u origin master 하면 다음부터
git add
git commit -m "블라블라"
git push만 누르면 됨

되도록이면 branch에는 branch를 하지는 말고
기능 작업 추가할 때 branch하는게 좋은데..

profile
👩🏻‍💻 Junior Web Frontend Developer

0개의 댓글