[데브코스][1-2] Git 기본 이론

·2024년 4월 10일
0

데브코스

목록 보기
2/20
post-thumbnail

1. 깃은 분산식 버전 관리 시스템

깃, 깃허브

깃은 로컬 시스템 (내 컴퓨터에 설치되는 시스템) 설치되는 프로그램

깃은 내 컴퓨터 안에서 버전을 관리해주는 시스템이자, 깃허브와 소통하는 시스템

깃허브는 원격으로 중앙에서 우리 프로젝트를 백업해두고, 버전 관리 해주고, 협업도 하게 해주는 시스템

깃허브는 원격 컴퓨터에서 백업을 담당하는 시스템이자, 내 컴퓨터와 별도로 버전 관리를 해주는 플랫폼

협업을 위해서는 깃허브라는 중간 장치가 있어야 하고 각각 개개인의 컴퓨터에는 깃이 설치되어야하는 것

깃과 깃허브의 필요성

하나의 프로젝트 내의 여러 폴더가 존재

한 폴더에서 유의미한 수정이 이루어진다? → 폴더 그리고 프로그램 모두 버전이 변화

만약 깃이 없다고 가정?

변화한 폴더 버전을 복붙 후, 이전 파일 저장, 새로 생성된 파일 수정…

무수히 늘어나는 버전들을 저장하려면 똑같은 거 계속 복붙해놓으면 메모리가 아까움

프로젝트 버전 관리를 굳이 컴퓨터에서 안 하고, 깃허브가 대신해주는 것

깃허브는 버전이 몇 개이든 다 가지고 있어줌, 무료로

사용하지 않는 이전 버전들을 깃허브에 올려두거나 현재 버전이 날아가는 것을 방지해 저장

현재 버전(1.0)을 깃허브에 올려두고, 수정을 하면 버전(1.1)이 변경됨(내 컴퓨터에서)

깃허브는 이전 버전과 현재 버전 모두 관리하며, 원할떄마다 버전별로 사용 가능하도록 해줌

깃허브 동기화 이후에는 작업 폴더를 다른 컴퓨터에서도 깃허브에서 다운받아서 사용 가능

2. CLI vs GUI

CLI

커멘드 라인 인터페이스

셀(명령 프롬프트; 창)에서 글자를 입력해서 컴퓨터에서 명령을 내리는 것

터미널, 윈도우 터미널 등은 특정 프로그램을 위해서 만든 것이 아니라 일반적으로 만들어놓은 집합체 같은 느낌

파워셀, 배쉬, cmd

GUI

그래픽 유저 인터페이스

그래픽으로 컴퓨터에게 명령 내릴 수 있도록 사용자에게 화면 제공

3. 자주 쓰는 명령어 ls, cd, mkdir

ls

list segmentation의 약자

폴더 내의 요소들에 대해서 보여줌

폴더 내의 좀 더 많은 요소들을 전부 보여주는 ls -a

ls -a

cd

change directory의 약자

폴더 이동 명령어

명령어 뒤에 이동을 원하는 폴더명을 작성하면 이동됨

cd ..

..는 상위 폴더

따라서 cd ..는 상위폴더로 이동하는 명령어

mkdir

make directory의 약자

폴더 생성 명령어

명령어 뒤에 이름 기입하면

해당 이름의 폴더 생성됨

4. 자주 쓰는 명령어 init, status

init

깃아 너가 관리하는 저장소로 태어날게 초기화 시켜줘라는 의미

깃이 폴더 관리를 하기 위해서 폴더 안에 .git이라는 파일 생성(눈에 보이진 않게)

이후에 status를 확인하면, 아직 커밋이 없다고 하는 문구 확인 가능

초기화로 .git 폴더도 생성되었지만, 따로따로 그 안의 파일에 대해서도 깃에게 관리 요청을 해야 함

status

깃 상태를 보는 명령어

⚠️ fatal: not a git repository (or any of the parent directories): .git

깃에게 버전관리를 해달라고 요청하지 않으면 생기는 오류 문구

깃은 버전관리를 해주지만 컴퓨터에 있는 모든 폴더를 버전 관리하는 것은 불필요하기에 사용자가 요청하는 폴더 단위로 버전 관리를 진행 → 우리가 직접 폴더를 관리해달라고 요청해야 함

5. 자주 쓰는 명령어 add

깃은 시작부터 모든 파일을 다 트래킹해주지 않음

깃이 관리해주길 바란다면, git add 파일명 이라는 명령어를 사용해야 함

.git 폴더 안에 버전 관리 중인 상태를 적어놓음

성공적으로 수행되면, 아무런 멘트도 발생하지 않음

하지만, 버전을 저장하기 전에 관리하는, 더 저장할 건 없는지 기다리는 중

commit 전에 버전 만들기 위해서 파일 모으는 것

6. 자주 쓰는 명령어 commit, log

git commit

버전으로 저장할 것 모으고 있었지?

이제 add 아니고, 지금까지 모은 걸로 버전 만들자

git commit 명령어를 통해서!

git commit은 add로 모은 것으로 버전 만드는 명령어(vim(텍스트 편집기)를 이용해서 커밋 명령어를 따로 작성해줘야 하는 번거로운 명령어로 git commit -m 명령어의 형태가 더 자주 쓰임)

⚠️ vim 명령어

vim에서는 명령모드, 입력모드, 마지막 행 모드로 총 3가지 모드가 존재

명령모드는 처음 vim 모드 실행 들어가게 되는 곳

방향키로 이동 가능

입력모드는 글 작성 가능하며, 다시 명령모드로 돌아오려면 esc를 누르면 됨

마지막 행 모드는 명령모드에서 :를 입력 맨 밑단에 :___ 형태로 입력 가능한 공간 생성됨. 현재까지 작성한 내용 저장하고 vim 저장(wq)할지, 그냥 종료(q, q!)할지 입력 가능

git commit
  • cc로 변경(커서가 있는 그줄의 내용 변경)

  • 커밋 메시지 작성 후 esc(입력 모드에서 명령 모드로 변환)

  • :wq(:는 명령모드에서 마지막 행 모드로 변환, wq는 저장 종류의 명령어)

git commit -m "명령어"

git commit -m 커밋 메시지

git commit보다 간결한 명령어

git log

지난 commit 내용 확인 가능

커밋된 순서, 커밋 메시지, 해시 정보를 얻을 수 있음

7. GUI로 init, add, commit

소스 컨트롤 란에서 gui로 init, add, commit 진행 가능

파일 작성 후, 소스 칸을 가면, U라는 마크 확인 가능

Untracked 즉, add가 되지 않은 상태라는 것

+를 통해서 add 가능

add가 되면, commit 버튼을 눌러서 커밋까지 완료해주면 됨

commit 버튼을 누르면 cli와 마찬가지로, 커밋메시지를 작성할 수 있음

참고사항(추가 파일 옆 마커들)

 **A** - Added (This is a new file that has been added to the repository)
 
**M** - Modified (An existing file has been changed)

**D** - Deleted (a file has been deleted)

**U** - Untracked (The file is new or has been changed but has not been added to the repository yet)

**C** - Conflict (There is a conflict in the file)

**R** - Renamed (The file has been renamed)

**S** - Submodule (In repository exists another subrepository)

**T** - Typechange (The file changed from symlink to regular file, or visa versa)

8. 깃 히스토리 설치

extension에서 git history 검색 후 설치

소스에서 하단의 버튼 누르면 히스토리 확인 가능

git log처럼 커밋 기록을 확인할 수 있음

커밋 메시지를 확인할 수 있고, 하단의 view를 통해서 버전명도 확인 가능

9. git remote -v, 깃허브 소개

깃허브는 원격으로 중앙에서 우리 프로젝트 백업해두고 버전 관리해주고 협업도 하게 해주는 시스템!

우리는 대기업의 컴퓨터를 중앙에 두고 원격으로 사용하는 것

깃은 우리 컴퓨터 안에서 버전 관리하는 걸 넘어서 깃허브랑 연동도 가능함

자주 쓰이는 명령어 remote, 연동을 위해서는 remote라는 명령어를 사용해야 함

git remote -v 

0개의 댓글