1. 리눅스 명령 연습하기
pwd : 현재 위치의 경로
ls : 현재 디렉터리에 어떤 파일이나 다른 디렉터리가 있는지 확인할 때
clear : 터미널 화면을 깨끗하게 지운다
cd : 터미널 창에서 디렉터리 사이를 이동할 때
리눅스에서 디렉터리를 나타내는 기호
mkdir : 현재 디렉터리 안에 하위 디렉터리를 만들 때
rm : 디렉터리를 삭제할 때
-r : 그 디렉터리 안에 있는 하위 디렉터리와 파일을 함께 삭제한다.
-f : 강제로 삭제한다.
exit : 터미널을 종료할 때
cat : 텍스트 문서의 내용을 간단히 확인할 때
2. Vim 편집기에서 텍스트 문서 만들기
vi /vim 편집기 명령어 정리 (단축키 모음 / 목록)
vi /vim 편집기 명령어 정리 (단축키 모음 / 목록) 리눅스의 대표적인 에디터인 vi 편집기의 명령어들에 대해서 정리해보았습니다. vi 시작 명령어 명령어 설명 예제 vi {파일명} 파일열기, 작성 vi tes
iamfreeman.tistory.com
3. 깃으로 버전 관리하기
git init : 현재 디렉터리에서 깃을 사용할 수 있도록 초기화한다.
git status : 현재 깃의 상태를 확인한다.
작업 트리 (Working tree / Working directory) : 파일 수정, 저장 등의 작업을 하는 디렉터리
스테이지 (Stage) 또는 스테이징 영역 (Staging area) : 버전으로 만들 파일이 대기하는 곳
저장소 또는 리포지토리 (Repository) : 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장한다.
git add (파일 이름) : 작업 디렉터리에서 파일을 만들거나 수정했다면, 스테이지에 그 파일을 추가한다.
"git add ." 명령어는 현재 작업 디렉터리에서 수정 내용이 있는 파일을 스테이지에 한꺼번에 올릴 수 있다.
git commit : 파일이 스테이징 영역에 있으면, 그 파일을 커밋함으로써 버전을 만든다.
-m : 뒤에 커밋과 함께 저장할 메시지를 적는다.
-am : 스테이징과 커밋을 한꺼번에 처리한다.
단, 이 방법은 한 번이라도 커밋한 적이 있는 파일을 다시 커밋할 때만 사용할 수 있다.
--amend : 방금 커밋한 메시지를 수정할 수 있다.
git log : 리포지토리에 저장된 버전을 확인할 때 사용한다.
--stat : 커밋과 관련된 파일까지 함께 살펴볼 수 있다.
--oneline : 한 줄에 한 커밋씩 보여주기 때문에, 여러 커밋을 한눈에 확인할 때 편리하다.
--branches : 브랜치마다 최신 커밋을 한눈에 살펴볼 수 있다.
--graph : 브랜치와 커밋 관계를 좀 더 보기 쉽게 그래프 형태로 표시한다.
--all : 최신 커밋 뿐만 아니라 모든 커밋을 다 보여주기 위한 옵션
git log 브랜치A..브랜치B : 브랜치A에는 없고, 브랜치B에만 있는 커밋을 보여준다. 반대는 이름을 바꾸면 된다!
git diff : 작업 디렉터리에 있는 파일과 스테이지에 있는 파일을 비교하거나, 스테이지에 있는 파일과 저장소에 있는
최신 커밋을 비교해서 수정한 파일을 커밋하기 전에 최종 검토할 수 있다.
※ gitignore 파일을 손쉽게 만들어주는 사이트
https://www.toptal.com/developers/gitignore
gitignore.io
Create useful .gitignore files for your project
www.toptal.com
untracked 상태 : 한 번도 커밋하지 않은 파일의 상태
tracked 상태 : 한 번이라도 커밋한 파일은 깃이 계속해서 수정 사항이 있는 지 추적한다.
unmodified 상태 : 현재 작업 디렉터리에 아무런 변경 사항이 없을 경우
modified 상태 : 파일이 수정만 된 상태 = 아직 작업 디렉터리에 있고, 스테이지에는 반영하지 않은 상태
staged 상태 : 커밋 직전 단계 = 수정한 파일을 스테이지에 올린 상태
3-5. 작업 되돌리기
git restore : 작업 디렉터리에서 (아직 스테이징하지 않은 상태의) 수정한 파일을 되돌릴 수 있다.
git restore --staged : 수정한 파일을 스테이징까지 했을 때, 스테이징을 취소할 수 있다.
이 옵션만 사용하면 스테이지에 있는 "모든 파일"을 한꺼번에 되돌릴 수 있고, 뒤에 파일 이름을 넣으면 해당 파일만 골라서 되돌릴 수 있다.
git reset HEAD^ : 수정한 파일을 스테이징하고, 커밋까지 했을 때 -> 가장 마지막에 한 커밋을 취소한다. (스테이징도 함께 취소된다!)
git reset 해시 : 원하는 시점(=버전)의 특정 커밋으로 되돌릴 수 있다.
해시는 git log 명령어로 확인해서 복사/붙여넣기 하면 된다.
그리고 reset 명령을 사용한다면, "되돌아갈" 커밋 해시를 저장해야 한다.
git revert : 변경 사항은 취소하지만, 커밋은 남겨두고 싶을 때 사용한다.
revert 명령을 사용한다면, "취소할" 커밋 해시를 저장해야 한다.
4. 깃과 브랜치
브랜치는 커밋을 가리키는 포인터와 비슷하다고 생각하자.
git branch : 현재 존재하는 모든 브랜치를 보여준다.
git branch "브랜치 이름" : 해당 이름을 가진 새로운 브랜치를 만든다.
git switch "브랜치 이름" : 현재 브랜치에서 해당 브랜치로 전환한다.
4-1. 서로 다른 파일을 갖는 브랜치 병합(merge) 하기
브랜치를 병합하려면, 먼저 main 브랜치에 있어야 한다.
git merge "가져올 브랜치 이름" : main 브랜치를 "기준으로" -> 해당 브랜치를 가져와 병합한다.
4-2. 서로 다른 브랜치가 같은 파일의 같은 부분을 수정했을 때, 병합하기
깃에서는 줄 단위로 변경 여부를 확인하기 때문에,
같은 파일의 같은 줄을 수정하고 브랜치를 병합하면 브랜치 충돌(conflict)가 발생한다.
git branch -d "브랜치 이름" : 해당 브랜치를 삭제한다. 그러나 main 브랜치에 병합되어 있어야 한다.
git branch -D "브랜치 이름" : 병합하지 않은 브랜치도 강제로 삭제할 수 있다.
※ 브랜치를 삭제하더라도 완전히 지워지는 것은 아니며, 같은 이름의 브랜치를 만들면 예전 내용을 다시 볼 수 있다.
4-3. Cherry-pick 으로 병합하기
main 브랜치와 어떤 브랜치를 합치긴 하는데, 브랜치 전체를 합치는 것이 아니라
해당 브랜치의 "특정 버전"의 "변경 내용"만 합치려고 할 때 사용하는 기능이다.
git cherry-pick "체리픽할 해시" : 해당 브랜치의 "특정 버전"의 "변경 내용"만 병합한다.
5. 깃허브 시작하기
git remote add origin "깃허브 주소" : 지역(local) 리포지토리와 원격(remote) 리포지토리를 연결한다.
git remote -v : 원격 리포지토리와의 연결 상태를 표시한다.
5-1. 지역 지포지토리와 원격 리포지토리 동기화하기
git push -u origin main : 지역 리포지토리의 브랜치를 원격 지포지토리의 main 브랜치에 푸시한다.
-u 는 지역 리포지토리의 브랜치를 원격 리포지토리의 브랜치에 연결하기 위한 것으로, 처음 한 번만 사용한다.
이후에는 -u 옵션이나 main 브랜치 이름 없이 간단히 푸시할 수 있다.
git pull 원격 리포지토리 이름(보통 origin) 브랜치 이름(보통 main) : 원격 리포지토리로부터 커밋 내려받기 (= 원격 리포지토리와 지역 리포지토리의 상태가 같아진다)
※ git pull origin main 은 -> git pull 로 생략할 수 있다!
5-2. 깃허브에 SSH 원격 접속하기
ssh-keygen : SSH 키를 생성한다. 키가 저장되는 위치나 그런 것들을 지정할 수 있다.
※ 2024년 3월 현재는 자동으로 ed25519 알고리즘을 사용하는 SSH 키를 만들어 주는 것 같다!
1. SSH 방식으로 깃허브에 접근하려면, 먼저 사용자 컴퓨터에 만들어져 있는 퍼블릭 키를 깃허브 서버로 전송한 다음 저장한다.
2. 사용자 컴퓨터에서 깃허브 리포지토리에 접속하면, 사용자 컴퓨터에 있는 프라이빗 키와 깃허브 서버에 있는 퍼블릭 키를 비교한다. 퍼블릭 키와 프라이빗 키는 한 쌍이므로 두 키가 서로 맞게 된다.
clip < : < 기호 다음에 있는 파일의 내용을 클립보드로 복사한다.
-> 이렇게 복사한 퍼블릭 키값을 깃허브에 등록하면, 그 컴퓨터는 깃허브 리포지토리의 SSH 주소만 알면
따로 로그인 정보를 입력하지 않고도 깃허브 리포지토리에 접속할 수 있다.
SSH 주소를 사용해 원격 리포지토리에 연결하는 방법도,
HTTPS 주소를 사용할 때와 똑같이 git remote add origin "복사한 주소 붙여넣기" 이다!
5-3. 서로 다른 컴퓨터에서 원격 리포지토리 함께 사용하기
git clone "원격 리포지토리 주소" [디렉터리 이름] : 원격 리포지토리를 복제하면서, 선택에 따라 디렉터리도 만들 수 있다.
이미 만들어 놓은 지역 리포지토리로 복제하겠다면, 해당 디렉터리에서 git clone . 명령을 하면 된다!
※ 당연히 하나의 원격 리포지토리에 연결되어 있는 지역 리포지토리가 많다면,
지역 리포지토리에서 작업하기 전에 원격 리포지토리의 변경 사항을 pull 해야 한다!!!
5-4. 원격 브랜치 정보 가져오기
원격 리포지토리의 최신 커밋을 무작정 합치지 않고, 어떤 변경 사항이 있었는지 정보만 가져온 후, 필요한 커밋만 합칠 수도 있다.
git fetch : 원격 리포지토리의 정보를 가져오는 명령이다.
git diff HEAD origin/main : 현재 지역 리포지토리의 최신 커밋과 원격 리포지토리에서 가져온 커밋의
차이를 살펴봄으로써 fetch로 가져온 커밋 정보를 확인할 수 있다.
이렇게 원격 리포지토리의 커밋을 확인하고, 합치겠다고 결정했다면
git merge origin/main 으로 합치거나, git pull 로 합쳐도 된다.
※ git pull = git fetch + git merge origin/main 과 같다!
6. VSCode로 다루는 깃과 깃허브
만약 + 를 눌러서 파일을 스테이징 했다면
6-1. 깃허브 원격 리포지토리와 연결하기
1. HTTPS 주소를 복사한다.
원격 리포지토리로 푸시하기
6-2. 브랜치 관리하기
브랜치 만들기
브랜치 병합하기
7. 깃허브의 새로운 서비스와 기능
1) 누구나 사용할 수 있는 깃허브 데브 (github.dev)
깃허브 데브는 웹 브라우저에서 VSCode를 열어 리포지토리의 소스를 수정할 수도 있고, 깃허브로 다시 푸시할 수도 있다.
즉, 인터넷 접속만 가능하다면 언제든지 리포지토리에서 필요한 작업을 할 수 있다.
또한 VSCode를 설치할 수 없는 태블릿 컴퓨터나 다른 장치에서도 언제든지 접속해서 소스를 작성할 수 있다.
깃허브 데브에 접근하는 방법은 크게 다음 2가지이다.
원하는 만큼 작업하고 나면...