https://github.com/choidae1/git-github-study
Repo for learning 「깃&깃허브 입문」(이지스퍼블리싱)
https://github.com/choidae1/git-github-study
git github tutorial
Last synced: 2 months ago
JSON representation
Repo for learning 「깃&깃허브 입문」(이지스퍼블리싱)
- Host: GitHub
- URL: https://github.com/choidae1/git-github-study
- Owner: ChoiDae1
- Created: 2022-01-28T07:49:57.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-01-04T05:11:44.000Z (over 2 years ago)
- Last Synced: 2025-01-17T12:17:29.488Z (4 months ago)
- Topics: git, github, tutorial
- Homepage:
- Size: 44.9 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Git-Github-Study
Repo for Learning 「깃&깃허브 입문」(이지스퍼블리싱)
## 1. 깃 시작하기
### 리눅스 명령 연습하기
* **현재 디렉터리 살펴보기**
1. pwd -> 현재 위치의 경로가 나타남.
2. ls -> 현재 경로에서 어떤 파일과 디렉터리가 있는 확인함.
3. 리눅스 명령에 옵션을 추가하려면 -과 함께 원하는 옵션을 나타내는 글자를 함께 입력함.
* **터미널 창에서 디렉터리 이동하기**
1. cd .. -> 현재위치에서 상위 디렉터리로 이동함.
2. cd ~ -> 홈 디렉터리로 돌아감.
참고로 리눅스에서는 디렉터리를 나타내기 위한 기호로, ~ : 홈 디렉터리 ./ : 현재 사용자가 작업중인 디렉터리 ../ : 현재 디렉터리의 상위 디렉터리 를 사용함.
* **터미널 창에서 디렉터리 만들기 및 삭제하기**
1. mkdir [디렉터리 이름] -> 디렉터리 만듬.
2. rm -r [디렉터리 이름] -> 디렉터리 삭제하기, -r 옵션을 붙이면 디렉터리 안에 있는 하위 디렉터리와 파일까지 함께 삭제된다. 단, 삭제할 디렉터리의 상위 디렉터리에서 입력해야 함.
* **빔에서 텍스트 문서 만들기**
빔(Vim)은 터미널에서 사용할 수 있는 대표적인 편집기임. 빔에는 ex 모드, 입력 모드가 있음.
1. vim [파일 이름(확장자 포함)] -> 깃에서 편집하기 위해서, 파일 만들기.
2. I, A 중 하나를 누르면 입력모드로 전환됨. 텍스트 입력 가능함.
3. Esc 키 ex 모드로 돌아감. :wq를 입력하고 Enter를 하면 편집 중이던 문서를 저장하고 종료함. 파일 이름을 함께 입력하면 그 이름으로 저장함.
* **터미널 창에서 텍스트 문서 내용 확인하기**
1. cat [파일 이름.txt] -> 파일 이름.txt의 내용 터미널에서 확인함.
* **터미널 창의 내용 지우기 및 종료**
1. clear -> 터미널 창의 내용을 지움.
2. exit -> 터미널 창을 종료함.
## 2. 깃으로 버전 관리하기
### 2.1. 깃 저장소 만들기
저장소를 만들고 싶은 디렉토리로 이동해서 **깃을 초기화**하면 그때부터 해당 디렉토리에 있는 파일들을 버전 관리할 수 있다.
git init -> 깃을 사용할 수 있도록 디렉토리를 초기화 하는 것. 'Initialized empty Git repository ...' 라는 메시지가 나타난다.
### 2.2. 버전 만들기
깃이 **버전을 만드는 과정**은 다음과 같다.
**작업트리 -> 스테이지 -> 저장소**, 스테이지와 저장소는 보이지 않는다. 깃을 초기화 했을때 만들어지는 .git 디렉토리 안에 숨은 파일 형태로 존재하는 영역이다.
작업트리에서 문서를 수정하고, 수정한 파일 중 버전으로 만들고 싶은 파일을 스테이지에 저장함. 마지막으로 스테이지에 있는 파일을 저장소로 commit하면, 파일에 대한 버전이 만들어짐.
* **명령어**
1. git status -> 깃의 상태를 확인, untracked file은 깃에서 한번도 버전 관리를 하지 않은 파일을 말한다.
2. git add [파일 이름(확장자 포함)] -> 해당파일을 스테이징 함.
3. git commit-m "[커밋메시지]" -> 커밋을 통해 버전 만들기.
4. git log -> 저장소에 저장된 버전 확인. 지금까지 커밋했던 기록을 살펴보기 위한 명령.
5. git commit -am "[커밋메시지]"
### 2.3. 커밋 내용 확인하기
* **명령어**
1. git log를 통해 커밋내용을 확인할 수 있다.
2. git diff -> 작업트리에 있는 파일과 저장소에 있는 최신 커밋과 비교해서 어떤 내용이 다른지 확인가능. 혹은 스테이지에 있는 파일과 최신커밋 비교.
### 2.4. 버전 만드는 단계마다 파일 상태 알아보기
* **tracked 파일과 untracked 파일**
-> tracked 파일은 이미 커밋기록이 있어서 파일의 수정여부를 계속 추적함. 반면, untracked 파일은 아직 커밋된적이 없기(버전 관리를 하지 않음) 때문에 수정여부를 추적하지 않음.
참고로, git log --stat을 하면, 커밋에 관련된 파일까지 확인할 수 있음.
* **unmodified, modified, staged 상태**
-> unmodified 상태에서 파일을 수정하면, modified 상태가 된다. modified 상태의 파일을 스테이징하면 staged 상태가 되고, 이를 커밋하면 다시 unmodified 상태가 된다.
### 2.5. 작업 되돌리기
* **명령어**
1. git checkout -- [파일 이름(확장자 포함)] -> 작업트리에서 수정한 내용을 취소하고, 가장 최신 버전 상태로 되돌리는 것. (스테이징 전) 참고로 checkout 커밋해시로 하면, 지정한 커밋해시로 이동함.
2. git reset HEAD [파일 이름(확장자 포함)] -> 스테이징 되돌리기
3. git reset HEAD^ -> 수정된 파일을 스테이징하고 커밋까지 했을 때, 가장 마지막에 한 커밋을 취소. 취소한 파일의 내용이 작업트리에만 남음.
4. git reset --hard 커밋 해시 -> 최신 커밋을 특정 커밋으로 되돌리기, 특정 커밋 이후 커밋은 사라짐. 파일 또한 특정 커밋 버전으로 되돌아감.
5. git revert [커밋을 취소할 커밋해시] -> 가장 최근에 커밋한 버전을 취소하고, 직전 커밋으로 되돌아갈때 씀. 하지만 여기서는 최근 커밋도 그대로 남아있음.
## 3.깃과 브랜치
### 3.1. 브랜치란?
깃으로 버전관리를 시작하면 기본적으로 master라는 브랜치가 만들어짐. 기존에 저장한 파일을 master 브랜치에 유지하면서, 기존 파일을 수정하거나 새로운 기능을 구현할 파일을 만들 수 있음.
이렇게 master 브랜치에서 뻗어 나오는 새 브랜치를 만드는 것을 분기(branch)한다고 함. 새로운 브랜치에서 작업을 다 끝냈다면 새 브랜치에 있던 파일을 원래 master 브랜치에 합칠 수 있는데,
이 과정을 병합(merge)한다고 함.
### 3.2. 브랜치 만들기
HEAD는 여러작업 중인 브랜치 중 현재 작업 중인 브랜치를 가리킴.
* **명령어**
1. git branch -> 작업 중인 브랜치가 무엇인지 확인할 수 있음, 브랜치 이름 앞에 * 표시는 작업하고 있는 브랜치를 뜻함.
2. git branch [브랜치 이름] -> 새로운 브랜치 만들기
3. git checkout [브랜치 이름] -> 브랜치 사이 이동하기
4. git log --oneline -> 한 줄에 한 커밋씩 나타남.
### 3.3. 브랜치 정보 확인하기
* **명령어**
1. git log --oneline --branches -> 각 브랜치의 커밋을 함께 볼 수 있음.
2. git log --oneline --branches --graph -> 브랜치와 커밋의 관계를 그래프 형태로 볼 수 있음.
3. git log [기준이 되는 브랜치 이름]..[비교하는 브랜치] -> 왼쪽에 있는 브랜치를 기준으로 오른쪽 브랜치와 비교해서 다른 커밋을 보여줌.
### 3.4. 브랜치 병합하기
* **명령어**
1. git init [디렉터리명] -> 새로운 디렉터리를 만들고 저장소를 초기화하는 과정을 한꺼번에 처리함.
2. git merge [merge할 브랜치 이름] -> 현재 작업중인 브랜치에 브랜치를 가져와 병합. 같은 문서의 다른 위치를 수정했을 때는 충돌없이 잘 병합됨. 같은 문서의 같은 위치를 수정했을 때는 충돌이 발생하고, 편집기가 열리게 되는데, 여기서 수정을 하고 병합을 진행. 이외에도 병합 자동화으로 처리해주는 프로그램도 존재함.
3. git branch -d [삭제할 브랜치 이름] -> 브랜치 병합한 후 더 이상 사용하지 않는 브랜치를 깃에서 삭제함. 이렇게 삭제해고 같은 이름의 브랜치를 만들면 예전 내용을 다시 볼 수 있음.
### 3.5. 브랜치 관리하기
* **명령어**
1. git reset [커밋 해시] -> HEAD가 가르키고 있는 브랜치의 최신 커밋을 원하는 커밋으로 지정. 명령을 수행한 뒤 브랜치와 연결이 끊긴 커밋은 삭제됨.
2. git stash -> 작업트리에서 수정한 내용을 스테이지에 올리기 전에 다른 파일을 수정해야 할 때, 수정한 내용을 임시로 어딘가에 보관하기 위함.
3. git stash list -> stash 작업을 통해 보관된 작업들을 볼 수 있음. stash@{0}이 가장 최근에 감춘 것
4. git stash pop -> stash 목록에서 가장 최근 항목을 다시 되돌림.
## 4. 깃허브로 백업하기
### 4.1. 지역 저장소를 원격 저장소에 연결하기
* **명령어**
1. git remote add origin [복사한 주소(Https 주소)] -> 원격 저장소(remote)에 origin을 추가함. 여기서 origin이 복사한 주소를 가르킴. 참고로 Https 주소는 https://github.com/아이디/저장소명 과 같은 형태임.
2. git remote -v -> 원격 저장소에 제대로 연결됐는지 확인
### 4.2. 원격 저장소에 올리기 및 내려받기
* **명령어**
1. git push -u origin master -> **현재 작업중인 브랜치와 관계없이**, 지역 저장소의 master 브랜치를 원격저장소의 master 브랜치로 푸시하라는 명령. 여기서 푸시는 지역 저장소의 소스를 원격 저장소로 올리는 것을 말함. -u는 처음 한번만 쓰면 된다. -> 다음부터는 git push만 쓰면 원격저장소의 master 브랜치로 푸시할 수 있음.
2. git pull origin master -> 원격저장소의 master 브랜치 내용을 **현재 작업중인 지역저장소의 브랜치**로 가져온다는 뜻임.
### 4.3. 깃허브에 SSH 원격 접속하기
SSH 원격접속은 프라이빗 키와 퍼블릭 키를 사용해 현재 사용하고 있는 기기를 깃허브에 인증하는 방식임.
* **명령어**
1. ssh-keygen -> SSH 키 생성하기, Enter를 세번 누르면 id_rsa 파일이 프라이빗 키이고, id_rsa.pub 파일이 퍼블릭 키임. ~/.ssh 경로에 저장됨.
2. cd ~/.ssh -> cat id_rsa.pub을 통해 퍼블릭 키 복사 -> 깃허브 setting에 SSH Keys에 복붙 -> 이제 SSH 키를 만든 컴퓨터는 SSH 주소만 알고 있으면, 로그인 정보를 입력하지 않고도 즉시 그 저장소에 접속할 수 있다.
## 5. 깃허브로 협업하기
### 5.1. 여러 컴퓨터에서 원격 저장소 함께 사용하기
* **명령어**
1. git clone [원격저장소 주소] git_home -> git_home(지역저장소) 이라는 디렉터리가 없다면 자동으로 디렉터리가 만들고, 원격 저장소를 git_home에 복사함. 이렇게 원격 저장소를 복제하면, 자동으로 지역 저장소와 원격 저장소가 연결됨.
2. git pull + git push 적절하게 사용.
### 5.2. 원격 브랜치 정보 가져오기
* **명령어**
1. git fetch -> 원격 브랜치 정보 가져오기, git pull과 다르게 원격 브랜치에 어떤 변화가 있는지 그 정보만 가져옴. 패치해서 가져온 최신 커밋을 살펴보고 싶다면 FETCH_HEAD 브랜치로 체크아웃해서 확인함. 만약 여기서 최신 커밋을 현재 브랜치에 합치려면 git merge FETCH_HEAD 를 통해 병합.
2. git merge origin/브랜치 이름 -> 브랜치에 있는 커밋을 현재 브랜치와 병합함.
### 5.3. 협업의 기본 알아보기
* **공동작업자 추가하기**
저장소 화면에서 setting에 들어감 -> [Collaborators]를 클릭해서 초대하고자하는 사람의 깃허브 아이디나 메일주소를 입력 -> 초대받은 사람이 초대 수락하면 됨
* **첫 번째 커밋이 아니라면 풀 먼저하기**
깃허브에서 협업할 때는 여러 사람이 함께 문서를 수정하고 푸시하기 때문에 반드시 작업하기 전에 원격 저장소의 최신 커밋을 풀한 다음 자신의 커밋을 푸시해야 함.
### 5.4. 협업에서 브랜치 사용하기
* **명령어**
1. git checkout -b [브랜치 이름] -> 브랜치를 만들고, 체크아웃까지 함. 브랜치가 이미있으면 체크아웃만 함.
2. git push origin [브랜치 이름] -> 원격 저장소에 브랜치를 푸시한다는 의미임.
* **pull request로 푸시한 브랜치 병합하기**
협업을 하다보면 팀원들은 각자 다른 기능을 맡아서 작업하는 경우가 많음. 이럴 때는 각자의 작업이 master 브랜치와 섞이지 않도록 새 브랜치를 만들어서 버전을 관리함. 그리고 pull request를 통해 브랜치를 master 브랜치와 병합함.