git이란?
: 버전 컨트롤 시스템 종류 중 하나로 어떤 버전을 관리한다. 내가 만든 소스코드의 버전을 확인하는 것으로 단순 버전 관리도구가 아닌 협업시 편리한 도구이다. -> 모든 파일에 대한 스냅샷을 기록한다.
Modified -> Staged -> Committed
- Modified : clone하고 수정된 처음의 상태
- Staged : 중간 save 곧 commit될거라고 마크한 상태, 잘못된 경우 되돌리기가 가능하다.
- add : Modified와 Staged의 중간단계에 있는 상태, 수정된 파일을 staged상태로 중간저장
- committed : git 기본 상태 중 마지막
로컬저장소
작업 디렉토리 -(add)> Index(준비영역) -(commit)> HEAD
github란?
: git을 인터넷에서 관리 할 수 있는 중앙관리 시스템(중앙서버)으로 기준이되는 저장소가 repository이다.
중앙서버에 업로드하려면 push해야한다.
git의 다양한 명령어
- init : git디렉토리가 해당 프로젝트 파일에 존재하기에 모든 작업들이 git에 의해 탐지되고 감지될 수 있게 관리
- commit : commit작업을 한다
- diff : 무엇이 추가 되었는지 등의 수정사항들을 보여주는 것
- status : git레포지토리에 있는 것들의 상태를 보여줌
- rm : 파일 삭제
- mv : 파일 이동 rename시 사용한다
- checkout : branch이동시 사용
branch
: master를 한번에 사용하면 변동사항이 즉각적으로 다루기 힘들기에 문제점이 많다.
- merge : 마스터에 브랜치를 병합하는 것
- push : 커밋을 공동 저장소에 올리고 싶다. 푸시를 통해 저장소에 내 코드 올리기
git push origin master
git push origin feature/folder(branchName)
- pull : 다른 사람이 개발한 코드(커밋)을 내 컴퓨터에 받아오고 싶을 때
git pull
git pull origin master
풀 리퀘스트
: 병합 요청을 하는 것으로 다른 개발자들에게 리뷰와 컨펌을 받는 것. 리뷰는 코드 변경사항에 댓글을 달 수 있다.
💡확실할 때 add를 할 것, commit은 자주 하는 것이 좋으며 커밋메세지를 잘 쓰는 것이 추후에 문제가 발생했을 때, 내가 원하는 시점으로 잘 돌아갈 수 있다.
세션
(base) -ui-MacBookPro:git3 $ vi a.js
//파일을 생성하기
(base) -ui-MacBookPro:git3 $ git add .
//현재 파일을 추가하기
(base) -ui-:git3 $ git commit -m "added ran"
//추가한 파일을 커밋메세지 작성해서 커밋하기
(base) -ui-MacBookPro:git3 $ git push origin feature/mr
//하면 내 이메일과 비밀번호를 쳐야한다.
(base) -ui-MacBookPro:git3 $ vi README.md
//vi로 파일 읽기
(base) -ui-MacBookPro:git3 $ git pull origin master
//pull은 가져오는 것 master를 가져오는 것
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (19/19), done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 16 (delta 4), reused 11 (delta 2), pack-reused 0
오브젝트 묶음 푸는 중: 100% (16/16), 2.39 KiB | 222.00 KiB/s, 완료.
https://github.com/wecode-bootcamp-korea/git3 URL에서
* branch master -> FETCH_HEAD
be3b439..1c6a667 master -> origin/master
자동 병합: README.md
충돌 (내용): README.md에 병합 충돌
자동 병합이 실패했습니다. 충돌을 바로잡고 결과물을 커밋하십시오.
//다른 사람이 작성한 master를 불러온 것이기에 수정이 필요하다.
(base) -ui-MacBookPro:git3 $ vi README.md
You have new mail in /var/mail/
(base) -ui-MacBookPro:git3 $ git add .
(base) -ui-MacBookPro:git3 $ git commit -m "revised"
[feature/mr 623ba9e] revised
(base) -ui-MacBookPro:git3 $ git push origin feature/mr
//push는 보내는 것.
오브젝트 나열하는 중: 4, 완료.
오브젝트 개수 세는 중: 100% (4/4), 완료.
Delta compression using up to 4 threads
오브젝트 압축하는 중: 100% (2/2), 완료.
오브젝트 쓰는 중: 100% (2/2), 340 bytes | 340.00 KiB/s, 완료.
Total 2 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/wecode-bootcamp-korea/git3.git
2df03dc..623ba9e feature/gmr -> feature/mr
(base) -ui-MacBookPro:git3 $ git branch feature/mr
(base) -ui-MacBookPro:git3 $ git checkout feature/mr
'feature/mr' 브랜치로 전환합니다
(base) -ui-MacBookPro:git3 $ git branch feature/mr
(base) -ui-MacBookPro:git3 $ git checkout feature/mr
'feature/mr' 브랜치로 전환합니다
(base) -ui-MacBookPro:git3 $ vi mi.js
(base) -ui-MacBookPro:git3 $ git add .
(base) -ui-MacBookPro:git3 $ git commit -m "안녕?"
[feature/mr 8b318f7] 안녕?
1 file changed, 1 insertion(+)
create mode 100644 mi.js
(base) -ui-MacBookPro:git3 $ git push origin feature/mr
오브젝트 나열하는 중: 4, 완료.
오브젝트 개수 세는 중: 100% (4/4), 완료.
Delta compression using up to 4 threads
오브젝트 압축하는 중: 100% (2/2), 완료.
오브젝트 쓰는 중: 100% (3/3), 278 bytes | 278.00 KiB/s, 완료.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
remote:
remote: Create a pull request for 'feature/mr' on GitHub by visiting:
remote: https://github.com/wecode-bootcamp-korea/git3/pull/new/feature/mr
remote:
To https://github.com/wecode-bootcamp-korea/git3.git
* [new branch] feature/mr -> feature/mr
(base) -ui-MacBookPro:git3 $ git checkout master
'master' 브랜치로 전환합니다
브랜치가 'origin/master'보다 7개 커밋 뒤에 있고, 앞으로 돌릴 수 있습니다.
(로컬 브랜치를 업데이트하려면 "git pull"을 사용하십시오)
(base) -ui-MacBookPro:git3 $ git branch feture/ran
(base) -ui-MacBookPro:git3 $ git checkout feture/ran
'feture/ran' 브랜치로 전환합니다
(base) -ui-MacBookPro:git3 $ ls
README.md
(base) -ui-MacBookPro:git3 $ vi README.md
(base) -ui-MacBookPro:git3 $
한 다음 github가서 requests해야한다.
1. 오늘 세션 후 새로 알게된 개념이나 명령어 정리
내 local file을 git에 연동시키는 방법
git remote -v(지금 있는 레포지토리의 url)
//local에서 작업을 한거니까 github 레포지토리, 서버에 있는 레포지토리를 remote 커밋이 가능
git init
//git이랑 연동 될 수 있게 (git 폴더로 초기화 해주기)
git remote add origin https://github.com/gwonRan/westargram.git
//파일이랑 연동 시키겠다.
git status
//상태보기 add했는지 commit을 했는지
git add .
//중간 저장, 스테이징 상태로 올려보내기
git commit -m(message) ""
//commit 메세지 작성
git log
//지금까지 커밋한 내용들이 나오는 것
q눌러서 나오고
git status
//빨간색 나오면 다시 add commit
git push origin master
//내가 만든 master브랜치를 푸쉬하겠다.
git branch branchName
//브랜치 만들기
git push origin branchName
//내가 만든 branch에 푸쉬하겠다.
git checkout branchName
//브랜치를 사용할거야!
git checkout -b branchName
//브랜치를 새로만듬과 동시에 브랜치로 바로 이동하기
mkdir fileName
//터미널에서 파일 만드는 법
git branch branchName
//브랜치 만들기
git branch -d branch_name
//브랜치 삭제
git checkout master
//master가지로 돌아오기
git push origin branchName
//새로 만든 가지를 원격 저장소로 전송
git push origin master
//변경 내용을 원격 서버로 올리기
git checkout -b branchName
//branchName 가지를 만들고 그 가지로 가는 것
git clone gitHubUrl
//로컬 저장소를 복제하기
git pull origin master
//pull == 소스의 변경사항을 다운
git add . / fileName
//변경된 파일을 인덱스에 추가하기
git remote add origin <원격 서버 주소>
//변경 내용을 원격 서버로 발행
터미널에서 vi사용하기
vi fileName.확장자명
//vi에서 파일 실행
- vi에서 파일을 open하고 i하면 수정이 가능, dd는 한 줄 지우기,
esc -> shift + ; -> -q
//vi 나가기
esc -> shift + ; -> -wq
//vi 나가기 전 수정사항 저장하기
2. 세션 시간에 재밌었던 부분
: 다른 사람이 commit을 한 파일을 내가 git pull origin master로 수정해서 commit해보는 것이 즐거웠다.
3. git공부시 참고 할 사이트
git - 간편 안내서 - 어렵지 않아요!
rogerdudler.github.io
Learn Git Branching
An interactive Git visualization tool to educate and challenge!
learngitbranching.js.org
4. 추가로 공부한 부분
Remote
리모트 저장소는 인터넷이나 네트워크의 어딘가에 있는 저장소를 말한다. 데이터를 push하고 pull할 수 있는 것으로 저장소를 추가하고 삭제 뿐만 아니라 브랜치를 관리하고 추적할지 말지를 관리. git remote로 프로젝트에 등록된 리모트 저장소를 확인가능하다. 저장소를 clone하면 origin이라는 리모트 저장소가 자동으로 등록된다.
git remote -v
-v옵션은 단축이름과 URL을 볼 수 있다.
저장소가 여러개 있다면 등록된 전부를 보여준다.
여러 사람과 함께 작업하는 저장소가 여러개라면
많은 결과를 볼 수 있다.
git remote add ran <url>
리모트 저장소를 추가하는 방법, 새 리모트 저장소 추가
'Web > ETC' 카테고리의 다른 글
자료 구조의 Array와 Tuple (0) | 2020.05.13 |
---|---|
웹은 어떻게 작동할까? 네트워크 OSI 7계층 모델 (0) | 2020.05.12 |
웹이 작동하는 방법 (0) | 2020.05.09 |
링크 (0) | 2020.04.25 |
#개발자 도구 (0) | 2020.04.25 |
댓글