본문 바로가기
독서&그 외

Git 명령어 정리

by winteringg 2022. 7. 29.
## 간단 정리
Git : 컴퓨터 파일의 변경사항을 추적하고, 여러 사용자들 간에 해당 파일의 작업 내용을 공유하기 위한 버전 관리 시스템
Github : Git 기반, 작업한 파일들을 원격으로 저장할 수 있게 해주는 원격 저장소

 작성한 코드를 한번 저장소에 올리면, 반드시 수정할 일이 생긴다. 조금씩 코드를 수정하며 파일들을 업데이트(변경/삭제) 하다 보면, 새롭게 변경된 파일들이 마치 상자를 쌓는 모양처럼 차곡차곡 쌓이게 기록들을 남기게 되는데, 제일 처음 올렸던 원시 상태의 파일이 쉽게 말하면버전 1' 것이다. 이렇게 코드들을 수정하면서, 예를 들자면, 최종.ver’, ‘최최종.ver’, ‘진짜최최최종.ver’ 같이 버전들을 계속 업데이트 하며 관리한다고 해서 Git 버전 관리 시스템 (Version Control System)이라고 부른다. 

1. Git 기본 명령어

저장소(repository) 생성
mkdir (폴더명) 폴더/디렉토리 만들기
ls -al 현재 폴더의 파일 리스트(ls) 전체(al) 확인하기
cd (폴더명) 해당 폴더로 진입하기
clear 로그 기록 위로 올려서 화면 정리하기
git init 현재 디렉토리에서 git 을 시작함. (생성한 디렉토리에서 실행하면 git 저장소로 초기화되고, git 이 관리할 수 있는 일종의 사이트가 됨. 최초 1회만 초기화 하면 됨)
git status 현재 저장소 상태를 확인해줌 (커밋 후로 사용하면 수행되었는지 확인할 있음)
git remote add origin (ssh key) 원격 저장소에 origin 이라는 저장소를 추가함. 관례적으로 origin 이라는 명칭을 사용함.
git remote 원격 저장소가 잘 만들어졌는지 상태 확인하고 싶을 때 사용.
git fetch origin origin 이라는 원격 저장소 내의 정보를 내 로컬 저장소로 '단순히' 불러옴. (원격 저장소와 로컬 저장소가 병합되지는 않은 상태)
git pull origin origin 이라는 원격 저장소 내의 정보를 로컬 저장소로 불러올 뿐만 아니라 자동으로 병합까지 수행함.
브랜치 (branch) 생성
**branch 란?**
- 프로젝트의 기준 코드인 main 브랜치로부터 독립적인 작업 공간을 만들어 주는 기능.
- 여러 개발자가 서로 다른 버전의 코드를 만들 때 서로의 작업에 영향을 주지 않기 위해 필요함. (여러 작업을 동시에 진행할 수 있다는 뜻)
git switch -c main origin/main -c 는 create 의 의미.
main 이라는 브랜치를 create 하는데, 브랜치에는 origin 있는 main 브랜치의 정보를 가져옴.
git switch (브랜치명) 작업중인 브랜치 변경
git branch -d (브랜치명) 특정 브랜치 삭제
git branch (브랜치명) 저장소에 브랜치 추가
파일들의 작업 상태 변경
code . 온점(.) 은 현재 폴더를 의미함. 이 위치에서 Visual Studio Code 열라는 의미.
open . (Mac OS 기준) 현재 폴더의 finder 열림
git diff 변경된 내용을 확인할 수 있음
git add (파일명) 
git add .
삭제/수정 등 파일에 변경이 있을 사용. 해당 파일을 staging area 옮겨줌. 온점(.) 을 사용하면 폴더 내의 전체 파일을 add 할 수 있음. 이제부터 이 파일의 수정, 삭제 등의 모든 정보는 Git에 기록이 되어짐.
**staging area : 변경된 파일들을 무대 위로 올려서 commit 있는 최종 상태
git commit [-m "커밋 메세지"] 수정한 파일을 로컬 저장소에 최종적으로 제출하는 것.
[] 대괄호 안의 내용은 생략 가능. 만약 생략하면 커밋 메세지를 추가할 수 있는 vim 편집기가 열림.

git commit을 하면 현재 staging 된 파일들을 그대로 스냅샷으로 찍어서 로컬 저장소에 보관하게 됨. 이 스냅샷이 하나의 히스토리 기록이 되는 것. 이 기록을 기준으로 과거로 되돌아갈 수도 있고 미래로 갈 수도 있고 다른 브랜치로도 이동할 수 있는 기준점이 됨.
git push origin main 로컬 저장소에 commit 것들을 원격 저장소인 origin main 브랜치에 올림.
git push origin --all 로컬 저장소의 모든 브랜치를 push 함.
rm (파일명) 파일이 삭제 '준비' 상태가 됨. (실제 삭제된 것은 아니고삭제라는 것을 staging area 올린 . 완전 삭제하려면 다시 add -> commit -> push 과정을 거쳐야 .)
git restore --staged (파일명) 수정해서 staging area 보낸 내용을 다시 unstaging 상태로 바꿈.
**unstaging area : 파일에 변화가 있지만 commit 은 할 수 없 상태. (add 이전 상태)
git restore (파일명) stage 에서 내려온 파일을 복구.(수정 전으로 바꾸거나 삭제 이전 상태로 되돌림)
git clone (저장소 주소) 원격 저장소에 있는 디렉토리를 내 로컬 저장소로 복제. 순수파일들과 이 프로젝트의 커밋되었던 히스토리 정보까지 모두 복제함. 기존 저장소와 새로 복제된 저장소는 연결되어 있지 않음. 
키 로그 조회
git log 현재까지 했던 commit 내역을 있음.
git log -숫자 최근 몇 개의 commit 을 보여줄 지 지정.
git log --graph 내역들 좌측에 이음선 표시

** SSH key 란? **

더보기

- 서버에 접속할 때 비밀번호 대신 key 를 제출하는 방식으로, 비밀번호보다 높은 수준의 보안을 필요로 할 때나, 로그인 없이 자동으로 서버에 접속할 때 사용함.
- Secure Shell 의 준말로 비공개 키(private key) 와 공개 키 (public key) 한 쌍을 이용해 컴퓨터를 인증하는 방법으로 정보를 교환하는 방식. 비공개 키는 외부에 공개되지 않는 키이며, 공개키는 외부에 공개되는 키임.
- 비공개 키는 클라이언트 컴퓨터에 위치해야 하고, 공개키는 서버에 위치해야 함.
- 키를 등록하면, 그 뒤로 원격 저장소에 접근할 때마다 사용자 컴퓨터의 비공개 키와 깃허브 서버의 공개키를 비교함. 두 키가 서로 일치하는 지 확인 후 컴퓨터와 서버가 연결됨.
(출처: 생활코딩 SSH https://www.opentutorials.org/module/432/3738)


2. vim 편집기 (리눅스, UNIX 에서 사용할 수 있는 텍스트 편집기) 명령어

i 일반 모드에서 입력 모드 (insert) 로 전환됨.
esc 일반 모드로 전환됨.
:wq 변경된 상태를 저장하고 편집기를 나감.
:q 아무런 수정 없이 편집기를 나감.
:q! 현재 모드에서 강제로 탈출하여 편집기를 나감.
0 현재 행의 처음으로 이동
$ 현재 행의 끝으로 이동
x 입력 모드가 아닌 일반 모드에서 한 글자 삭제
3x 입력 모드가 아닌 일반 모드에서 3글자 삭제 (숫자는 임의로 지정)
u 방금 했던 수행 되돌리기 (undo)

 

'독서&그 외' 카테고리의 다른 글

IntelliJ 단축키 for Mac OS  (0) 2022.08.16
'함께 자라기 (애자일로 가는 길)' 을 읽고  (0) 2022.08.07
Apple 의 감성 반도체 M1 에 관하여  (0) 2022.08.04
PC 견적 맞춰보기  (0) 2022.08.03
컴퓨터 구조 이해  (0) 2022.08.03

댓글