코드스테이츠 수강 3주차 1일차에는 git 사용법을 배웟다.
1. GIT이란 무엇인가?
git은 파일을 관리해주는 시스템이다.
종종 레포트를 쓸 때, 문서를 작성할 때 등 추가되는 사항이 있으면 문서_V01, 문서_V02...이런식으로 이름을 바꿔가면서 작성해본 경험이 있을 것이다.
프로그래밍은 이게 직업으로 가면 몇만줄, 몇백~몇천명이 같이 만들기 때문에 부서내 막사사원한테 파일 정리하라고 시키면 마우스 누르느라 지문 다 없어진다.(물리적으로 불가능하다.)
Git이 하는 일
- Git은 파일의 변경사항을 기록한다.
- 사용자가 파일의 버젼을 관리할 수 있게 함
- 파일을 백업 한다.
- 같이 코드 짜는 사람들과 파일을 공유, 작업물 취합한다.
Git, Github?
앞에서 말했듯이 Git은 파일 관리시스템이다.
그러면 Github는? 그냥 Git에 클라우드를 얹은거다.
그런데, 이 둘이 만나서 원격 파일 관리가 가능해지는 것이다.
위 그림을 보면, 나와 내 파트너가 파일을 다루는 것을 볼 수 있다.
내가 파일에 약간의 수정을 가해 Github에 올리면, 파트너가 다운받고 또 편집 후 다시 Github에 올리는것으로 파일을 관리 하는것이다.
2. Git 동작순서
위에서 간단히 파일관리 시스템이라고 말했는데, 우리가 직접 사용하는 방식은 어떻게 될까?
그냥 블로그에 포스팅 하는거 처럼 올리면 땡인거 같은데, 또 인생이 그렇지 않다.
여기서 약간의 정리를 하면
- Remote 구역 : 깃"허브"에 올려진 구역
- Local , 하위구역: 우리 PC의 저장공간, Local에서 Remote의 Repository에 Push(업로드) 가능하다.
위의 그림에서 또 Add, commit등등 보인다. 이게 또 뭔가 싶은데 그냥 단계라고 생각하면 된다.
일단 https://gitforwindows.org/ 에서 깃을 설치하고, Gir Bash를 실행한 것으로 가정하겠다.
Git for Windows
Git for Windows focuses on offering a lightweight, native set of tools that bring the full feature set of the Git SCM to Windows while providing appropriate user interfaces for experienced Git users and novices alike. Git BASH Git for Windows provides a BA
gitforwindows.org
따운로드 할 때
1. Fork
Fork는 특정 프로젝트를 내 Github로 가져오는 것이라고 보면 된다.
김아무개의 Github를 내 Github로 복붙한다고 생각하면 쉽다.
(Github에서 일어나는 일)
2. Clone
내가 가져온 Github의 파일들을 하드디스크에 다운받는 것이라고 보면 쉽다.
(Git에서 일어나는 일 / 명령어 : git clone (깃허브 링크) )
업로드 할 때
1. Add
Add는 내 pc의 파일을 staged영역으로 업로드 하는것이다.
(Git에서 일어나는 일 / 명령어 : git add (파일명) , git add. <- Unstaged에 있는 파일을 싹다 Staged에 올린다.)
2.Commit
Commit는 Staged에 Unstaged의 파일을 업로드 하는것이다.
(Git에서 일어나는 일 / 명령어 : Gif commit -m '커밋 메세지' (커밋 메세지는 일종의 메모라고 생각하면 된다, ex: '로그인 수정 반영본'))
3. Push
Staged에 있는 파일을 Repository (Remote, Origin)에 업로드 하는것이다. (나의 GitHub에 업로드 하는것이다.)
(Git에서 일어나는 일 / 명령어 : git push (Origin) (branch) / origin은 내 Github를 뜻하고, branch는 해당 깃허브의 브렌치(실제로 우리가 레포지토리를 만들때 설정한 이름) 이다. )
위의 사진에는 branch가 main 이기 때문에 명령어는 git push origin main 일 것이다.
4. Pull Reqeust
내 깃허브 Repository 의 파일을 원래 Repository(Fork 해서 가져온 곳)에 업로드를 요청하는 것
(Github에서 일어나는 일)
최종적으로 다 수정해서 내꺼 거기에 반영해주세요 하는것이다.
위에서는 이미 있는 것을 Fork 하여 (Github에 있는 것을 가져와서) 진행했는데, 그냥 내 하드에 있는 파일을 깃허브로 만들어서 진행하고 싶다면...또, 다른이와 공유하고 싶다면
업로드 할 때
- Gitbash를 통해 해당 파일이 있는 경로에서 git init 명령어 실행 시 해당 디렉토리(폴더)가 Git Repository로 변환된다.
- 이 변환된 디렉토리를 git remote add 명령어로 내 Github와 연결한다.
(git remote add origin (Repository 주소)) - 이 레포지토리를 다른사람과 공유 하고 싶으면 git remote add (상대 레포지토리 이름(임의로 선정해도 ㄱㅊ)) (상대Repository 주소)
- git remote -v로 연결된것을 확인한다.
상대방이 다운로드 할 때
1. git pull (shortname) (branch) 명령어로 다운로드 한다. 이미 같은 파일이 있다면 병합된다.
충돌
파일을 내려받을 때, 만약 해당 파일과 똑같은 파일이 있으면 병합된다.
하지만, 똑같은 부분이 수정되어 있으면?
(EX:내 파일 26번째 줄 수정 / 남의 파일 26번째 줄 수정된거 다운로드)
우리가 생각하기로는 그냥 덮어쓰기 될거 같은데, 그러면 기껏 쓴 내 코드가 날아가 버리는 일이 발생한다.
그래서 Merae Conflict(병합 충돌)이 발생한다.
이 때 git status 명령어로 어떤 파일이 충돌하고 있는지 알아내고, 해당 파일을 자신이 가진 IDE( 비쥬얼 스튜디오나 인텔리제이같은 툴)로 열면 충돌되는 부분 (수정되는 부분인데, 위치가 중복되는 부분)을 취사선택 하여 저장하는 것으로 해결한다.
부가적으로..
약간의 명령어를 더 쓰고 끝내겠다.
- git status : 내 로컬로 복사해온 디렉토리의 commit 되기전 까지의 상태를 표시한다.
(내 PC의 Staging area ,untracked files 목록 확인) - git restore (파일명) : Staged, Unstaged 영역에서 변경한것을 취소 할때 사용한다.
- git reset HEAD^ : Staged에서 Local로 올라갈 때 취소 가능, 가장 최신의 commit을 취소 할 때 사용
- git log : 지금까지 올린 commit 들이 잘 기록 되었는지 확인하는 명령어
'백엔드 > 코드스테이츠 수강' 카테고리의 다른 글
코드스테이츠 수강_3주차_3일차_JAVA기초 (콘솔 입출력, 제어문) (0) | 2022.08.31 |
---|---|
코드스테이츠 수강_3주차_2일차_JAVA기초 (변수형, 연산자) (0) | 2022.08.31 |
코드스테이츠 수강_2주차_5일차_리눅스 기초 (0) | 2022.08.26 |
코드스테이츠 수강_2주차_4일차_Twittler 목업 구현 (0) | 2022.08.25 |
코드스테이츠 수강_2주차_3일차_페이지 레이아웃, 웹 앱 화면 설계하기 (0) | 2022.08.24 |