Git/Github (1)

CLI 와 GUI 의 차이

  • CLI : Command Line Interface ; 개발자들의 컴퓨터 활용 방식.

  • GUI : Graphic User Interface ; 그래픽적 요소를 토대로 컴퓨터를 활용하는 방식.

  • CLI 명령어 (macOS)

    1. pwd : 현재 directory 확인

    2. ls : 현재 directory 안에 있는 모든 파일/폴더 listing

    3. cd : change directory

      만약 현재 들어온 폴더에서 밖으로 나가고 싶다면? cd .. 이라고 입력.

      ( .는 현재 내위치, ..는 현재 경로의 바로 위 경로를 뜻한다.)

    4. mkdir - : -이라는 폴더 생성

    5. cp : copy paste

    6. mv : move

    7. rm : remove (파일)

    8. rm -rf : remove folder (폴더)

    9. rm -rf .git : git (으로 관리되고 있는) 폴더 삭제

  • 상대 경로 & 절대 경로

    경로를 이동할 때는 절대 경로, 상대 경로라는 것이 있다.

    우선 상대경로는, 현재 내가 위치한 곳에서의 본 특정한 폴더/파일의 경로. (내가 users/(유저명) 이라는 경로에 있다면 desktop 폴더의 경로는 그냥 desktop)

    ls 를 했을 때 보이는 폴더로 들어갈 때는 그냥 cd + 해당 폴더의 이름을 입력해서 들어가는데, 이때 사용하는 것이 바로 상대경로.

    cd desktop

    그런데 절대경로는 내가 위치한 곳과 상관없이, 특정한 폴더/파일이 위치한 경로의 전체 주소. 만약 바탕화면 경로를 절대 경로로 표시한다면 /users/(유저명)/desktop .

    cd /users/(유저명)/desktop

    절대경로는 앞에 / 를 붙인다는 특징이 있음.


Git

git 이란 특정 폴더, 파일들의 버전 관리를 위한 프로그램.

  • git 기본 명령어

    git init : git 저장소(repository)를 만드는 명령어. 이 명령어가 실행되어야만, 해당 폴더 내부의 폴더나 파일들을 관리할 수 있다.

    git add : 어떤 파일을 git으로 관리할지 지정

    → git add 명령어는 commit 을 하기 전에 (즉, 수정사항이 있을 때마다) 항상 다시 입력해줘야 한다.

    git add . : 여기서 .이란 현재 폴더의 내부 파일, 폴더 전체.

    git add -A : . 은 현재 명령어가 실행되는 폴더 내부의 파일을 뜻하는 반면에,

    -A 를 하게 되면 현재 경로가 어디든 현재 git 으로 관리되는 모든 파일에 대한 수정사항을 반영

    git reset (파일명) : git add 한 파일을 취소

    git commit -m"(커밋메세지)" : 현재 관리 중인 파일을 하나의 버전으로서 저장

    → commit 을 통해서 저장된 버전 간에는 우리가 원할 때 자유롭게 이동이 가능

    “커밋은 기능단위”로 하는 것이 원칙!

    • 커밋메세지 예시:

      커밋타입: 동작 기능이름/함수이름
      
      
      내가 지금 진행한 수정사항이 정확히 `어떤 타입`의 작업인지를 앞에 명시하고, 그 뒤로는 해당 작업에 대한 `세부사항`을 명시. (예를 들자면, `add feature1`, `create file1` 와 같은 방식으로 명시.)

      git status : git add 를 통해서 파일이 관리되고 있는지 확인

  • git으로 버전 되돌리기

    git log : 버전 확인하기

    git revert : 현재까지의 commit 기록은 유지하면서, 특정한 commit 이전으로 되돌리는 명령어. 되돌아가고 싶은 commit 이름을 적는게 아니라, 내가 없애고 싶은 commit 이름을 적는다!

    →이후 표시되는 커밋 메세지 입력 창은 바로 vim 이라는 텍스트 편집기를 기반으로 한다.

    • [vim 관련 필수 명령어]
      - (esc 후) i → (커서가 있는 부분부터) 파일 내부의 내용을 작성, 수정할 수 있습니다.
      - (esc 후) dd → (커서가 있는 부분의) 행을 삭제합니다.
      - (esc 후) :wq → 파일을 저장하면서 에디터를 종료합니다.
      - (esc 후) :q → 파일을 저장하지 않고 에디터를 종료합니다.

      git reset : 특정 커밋으로 돌아가면서, 그 커밋 이후의 커밋 기록을 삭제하는 명령어. 마치 그 이후의 커밋이 없었던 것처럼 만들어주는 것! **git reset 은 revert 와 반대로, 없애고 싶은 commit 이 아니라, 되돌아가고 싶은 commit**을 명시해야한다는 점 주의!

      git reset --soft (커밋번호)

      reset —soft 의 경우, 수정 사항 (이후의 커밋 내용) 에 대해서 그대로 두고, 기록만 삭제. 파일에 그대로 수정 사항은 남아있음.

      git reset --hard (커밋번호)

      git reset —hard 는 reset 에 명시한 그 커밋 이후의 모든 수정사항들을 완전히 삭제하는 기능. 그래서 —soft 로 했을 때와는 다르게, 바로 해당 커밋의 내용으로 파일이 되돌아가는 것

      이외에도 아래와 같은 명령어들이 있다.

    • git reset HEAD^ : 가장 최근의 커밋이 취소

    • git reset HEAD~2 : 현재부터 뒤에 명시한 숫자(2)만큼의 커밋이 취소

    • git reset —-mixed : —soft 와 비슷한데, 이후 수정사항들을 commit 이전으로 되돌리는 것이 아니라, add 이전으로 되돌림

Github

Git 이 단순히 버전을 기록하고 관리하는 도구라면,

Github 는 이 기록들을 온라인 상에 업로드하고, 보관할 수 있게 해주는 서비스.

Github 는 Git 으로 기록된 버전들을 올려놓기 위한 구글드라이브 같은 서비스.

우리 컴퓨터에 있는 Git 저장소Local Repository 라고 말하고,

Github 상의 (온라인 상의) Git 저장소Remote Repository 라고 한다.

연결 방법은 Local Repository 가 있는 곳에서 (git init 을 한 그 폴더에서) 아래 명령어를 입력.

git remote add origin (github repo 주소)

→ remote repository를 추가하는데, origin 이라는 이름의 저장소로서 우리가 뒤에 명시한 github repo 를 지정하겠다는 뜻.

위 설정이 완료되었다면, 앞으로 우리가 가진 commit 기록들을 올리기 위해서는 아래 코드만 실행하면 된다.

git push origin (브랜치명)

브랜치란 저장소 내부에 하나의 폴더를 만드는 것이라고 이해하면 된다. 다양한 브랜치를 만들 수 있고, 보통 각각의 브랜치 마다 용도를 정해놓고 개발을 진행하게 된다.

git 은 기본적으로 master 라는 브랜치에 파일을 기록하도록 설정이 되어있다. 그래서 우선은 git push origin master 라고 해서, 아까 설정한 origin 이라는 저장소 (git remote add origin 으로 지정했던 그 github repo) 의 master 라는 곳에 파일을 업로드.

push가 완료된 후 깃허브 웹사이트로 가보면 파일이 생겨있다!

원격 저장소에 있는 파일을 받아와서 내 컴퓨터에 그 수정사항들을 적용시켜주고 싶다면?

git pull 명령어를 사용하면 된다!

git pull origin (브랜치명)

master branch 에 파일들이 있다면 git pull origin master 라고 입력해서 깃허브에서 작성한 파일 (및 수정사항) 을 내 컴퓨터로 받아오기 가능. 다른 사람과 협업을 하는 경우, 다른 사람이 깃허브에 올린 수정사항을 받아서 개발을 진행해야 할때, git pull 을 유용하게 사용 가능!

profile
나는야 4개의 인간언어를 구사하고 2개의 컴퓨터언어를 배우는 개발자 꿈나무

0개의 댓글