
Git 용어 정리 및 해설
Working Tree
워킹 디렉토리, 스테이징 에이리어, 로컬 레포지토리 (깃 디렉토리)
3개 영역을 아우르는 것을 지칭
commit의 저장은 hash로 이루어짐
아래 snapshot의 사진의 98ca9.. 34ac2.. f30ab.. 들
Head
현 작업의 위치, 커밋이 변경될 때마다 자신의 최신 값을 가리키고 있음
(포인터로 가장 최신 커밋 이력을 보고 있음)snapshot
특정 시점의 프로젝트 소스코드의 특정 버전을 말함
Git 명령어 (CLI 환경)
git add [files]
명시한 파일을 스테이징
git status
현재 사용 중인 브랜치와 추적하는 파일 상태를 확인
git commit
추적하는 파일들의 변경이력을 저장하는 작업
위와 같은 형태로 아무 후속 키워드 없이 Commit 시 해당 화면 출력
추가로 이제 커밋 메시지에 대한 것을 서술 후 :wq로 커밋 처리
<제목(50자 이내)> <본문(선택 사항)> - 변경한 이유, 변경한 내용, 주요 변경점 - 한 줄에 72자 이내로 작성 <꼬리말(선택 사항)> - 이슈 트래커 ID - BREAKING CHANGE: 주요 변경사항 설명
git commit -m [message]
위와 같이 짧게 메세지 작성하여 가능
git diff [commit1 commit2]
현재 변경사항을 비교하여 출력
커밋 옵션 두개 명시할 경우 서로간 비교하여 출력
git log
깃의 커밋 내역들에 대한 상세한 정보를 보여줌
(작성자~메세지~일자 등 여러가지)
git reset <--강도> <커밋>
, restore <파일> , revert <커밋>reset 의 강도에 관해
soft → 커밋 기록 되돌림, 작업 디렉토리에 파일은 그대로 유지함
커밋된 내용은 되돌리나 작업 중인 상태는 변하지 않음
즉, 스테이징에 파일은 그대로 남음
(커밋 메세지를 다시 작성하고 싶을 때)mixed → 커밋 기록과 스테이징을 되돌리고
작업 디렉토리에 파일은 그대로 유지함
즉, 스테이징 파일은 해제되어 다시 수정되야할 상태로 돌아감
(커밋 내리고 해당 변경사항을 스테이지에 내렸으니 다시 add 필요)hard → 커밋 기록, 스테이징, 작업 디렉토리 전부 되돌림
즉, 모든 변경사항의 삭제가 이루어짐
restore
과거 커밋에 영향을 주지 않고 커밋으로 작업이 저장 전의 스테이지 단계로 작업을 취소 할 때 사용함
git restore <file> → 수정 중인 파일을 복원
과거에 커밋되어 저장된 상태로 파일을 복원함
git restore --staged <파일> → 스테이징 해제
스테이징 영역에 추가된 파일을 스테이징 해제함
스테이징된 파일을 작업 중 상태로 되돌림 → 내용을 되돌리는 게 아님!
(정말 쉽게 말해 작업 변경 내역에 올라오지 않게 내리는 것임)
이 모든 것들은 커밋 이력을 조정하여~의 대한 복구가 아니라
현재 작업 중인 파일을 커밋 이력에 해당하게 해당 파일을 복원하는 것
revert
기존 커밋을 취소하지만 커밋 기록을 보존하며 새로운 커밋을 생성하게 함
안전하게 변경 사항을 과거로 되돌릴 때 사용함
git revert <커밋> → 특정 커밋을 취소
커밋의 변경 사항을 취소하고, 이 취소 작업을 새 커밋으로 저장하게함git revert -n <커밋> → 커밋을 취소하고 새로 커밋을 생성하지 않음
커밋을 취소하지 않고, 취소된 변경 사항을 작업 디렉토리에 반영직전의 커밋을 지정하는 키워드 → HEAD~
ex) git revert HEAD~실제 시나리오 예시
abcabe (HEAD) fix: 기능 A 버그 수정! (허나 버그가 나옴)
abcabd feat: 기능 B 추가
abcabc feat: 기능 A 추가이럴 경우에 우선 push 여부를 보아야함
아직 push 전일 경우 → reset soft로 작업자가 진행하여 재수정 커밋
push 후일 경우 → revert abcabe로 취소 커밋 생성 후 우선 Push
그냥 작업 중인데 이상하게 전체가 꼬였을 경우 → restore 이후 작업
git cherry-pick [특정 커밋]
특정 브랜치의 커밋 내역을 복사해옴
복사된 커밋은 원래 브랜치와 완전한 별개의 기록으로 가져옴
커밋의 추적이 어려움
정말 긴급한 상황에 사용
git remote, clone
원격 저장소를 가져오기 → git clone <url>
레포지토리 연결하기 → git remote
완전한 새 프로젝트를 시작해서 git init 이후에 연결시
git remote add <url>원격 저장소가 이미 있는데 주소를 바꿀 때
(remote -v 를 했는데 이미 있는 경우)
→ git remote set-url <url>
pull, merge, push, origin 키워드에 관하여
git pull [원격 git 별명] [레포지토리 이름]
원격 → 로컬
git merge [레포지토리]
원격 ←→ 원격, 로컬 ←→ 로컬
git push [원격 git 별명] [레포지토리 이름]
로컬 → 원격
origin? → 초기 아무 별명을 지정하지 않고 url 지정시 origin으로
원격 git 의 별명으로 저장됨git clone https://github.com/user/repo.git -> origin으로 git clone -o github https://github.com/user/repo.git -> origin에서 github로 지정됨 -- 실제 네이밍은 아래처럼 사용함 git remote add github-work https://github.com/company/repo.git git remote add github-personal https://github.com/me/repo.git git remote add gitlab-backup https://gitlab.com/backup/repo.git
Linux 명령어 정리 및 해설
touch
touch <파일명.확장자> → 파일 생성
cp
cp <복사할 파일 이름> <복사할 위치>
less
cat 처럼 파일 내용을 보여주는데, 한번에 보여지는 만큼만 출력
head ←→ tail
head [-n 원하는 줄 수] 파일의 앞부분만 지정한 만큼 보여주는 것
tail은 뒷부분
vim, nano
둘 다 텍스트 편집기로 vim의 사용이 더 흔한 것으로 암
vim [file] 로 로드 후 단축키
a,A → 커서 후, 커서 전 입력 명령어
:set number → 줄 번호 나오게하기
G → 자료 맨 끝으로 이동
gg → 자료 맨 앞으로 이동이동은 화살표 or hljk (좌상하우) (Visual Block 등에서 사용)
ctrl + v (Mac), shift + v (Window) → 블록 단위 선택
(하단에 --VISUAL BLOCK-- 모드 나옴)마우스로 지정 후 d → 선택 범위 지움
dd → 커서 위치의 줄 삭제
u → 작업 취소
ctrl + r → 작업 다시 실행
df
사용 중인 디스크 경로, 경로별 용량 파악에 사용 (byte 단위)
-h 옵션을 통해 GB 단위로 보여줄 수 있음
du
개별 경로에서 사용 중인 용량을 보여줌 (byte 단위)
-sh 추가 옵션을 통해 용량을 표기 (M, G 같은 단위를 붙여서 보여줌)
whoami
현재 터미널을 사용하는 유저 정보를 보여줌
grep
입력으로 출력된 콘솔 내용에서 특정 문자열을 찾기 위해 사용
grep “<찾으려는 문자열>” [<문자열 검색할 파일 또는 명령어>]
ps aux | grep [프로세스 이름] 같이 조합해서 사용