git #1 commit, push, pull

김상진 ·2024년 1월 19일
0

git

목록 보기
1/3
post-thumbnail

git을 왜 공부하고 알아야 할까?

"개발자라면 git을 당연히 할 줄 알아야 한다"라는 세상에 살고 있다고 생각합니다.

git을 처음 공부할 때 너무 어려웠습니다. 처음 듣는 생소한 단어부터 명령어 그리고 결정적으로 잘못된 방법으로 작업을 진행하면 내가 몇 시간이 걸리든 그 작업물들을 공중분해 시킬 수 있다는 두려움까지 있었습니다.

이러한 점들을 극복하고 회사를 들어가든 팀 프로젝트를 진행하든 협업은 무조건 해야 한다고 생각하기 때문에 차근차근 git에 대한 내용을 공부하고 정리하려고 git에 대한 글들을 써보겠습니다.

(인텔리제이를 주로 사용하기 때문에 인텔리제이가 간편하게 지원해줌으로 인텔리제이를 이용하여 설명해드리겠습니다.)

git

git이란

깃(Git)은 2005년에 리누스 토르발스에 의해 개발된 '분산 버전 관리 시스템(Distributed Version Control Systems - DVCS)'으로, 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 파일에 대한 작업을 조율하는 데 사용됩니다.

즉, 주로 여러 명의 개발자가 하나의 소프트웨어 개발 프로젝트에 참여할 때, 소스 코드를 관리하는데 주로 사용됩니다.

버전 관리 도구라고 생각하시면 편합니다.

git이 필요한 예시

예를 들어 평소 저희가 대학교에서 팀플 과제물로 한글 파일로 만들 때 이게 다 만들었다고 생각해도 조금씩 수정하면서 아래와 같은 경우로 최종의 최종을 더하는 일이 생길 수 있습니다.

파일을 이와 같이 관리한다면 헷갈리겠죠?

그럴때 git을 사용하여 관리한다면 편하겠죠!

예를 들어 각자 자료조사를 할 때 누군가는 a를 누군가는 b를 누군가는 c를 조사했을 때에 이것들을 한 명이 모두 받아서 복사 붙여넣기를 하는 게 아니라 하나의 버전에다가 각자 올리면 끝입니다. 그리고 저렇게 파일이 여러 개 생길 일이 없겠죠. git을 사용하여 하나의 버전에다가 다들 올렸기 때문입니다.

git의 장점

  • 인터넷 연결이 되지 않은 곳에서도 개발을 진행할 수 있으며, 분산 버전 관리이기 때문에 중앙 저장소가 삭제되어도 원상복구가 가능
  • 각각의 개발자가 Branch에서 개발한 뒤, 본 프로그램에 합치는 merge 방식을 통한 병렬 개발 가능
  • 서브버전(Subversion SVN)과 비교 :
1) SVN = 중앙서버 업로드(직관적)                 
/  Git = 로컬저장소 저장 후 서버 업로드

2) SVN = 동시 업로드시 충돌 가능성 많음       
/  Git = Branch와 Merge를 통해 충돌 가능성 낮음

3) SVN = 모든 작업에 네트워크 사용되어 느림 
/  Git = 작업은 로컬에서, 업로드만 네트워크 사용해 빠름

4)                                                         
/  Git = 히스토리 관리 기능이 잘 제공되어, 히스토리 관리가 용이

git에 대해서는 아래처럼 생각하시면 됩니다.

  • 변경된 내용만 관리하는 도구
  • 코드를 누가 언제 무엇을 고쳤는지 서로 비교하면서 확인
  • 여러 개 코드 합치기, 이전 버전으로 돌아가기 등 이게 바로 git의 역할입니다.

github

  • 깃(Git)을 사용하는 프로젝트를 지원하는 웹 호스팅 서비스.
  • github는 icloud, naver cloud 등과 같은 코드 저장소라고 생각하시면 편합니다.
  • git으로 push를 하여 github에 올리는 개념이라고 생각하시면 됩니다.

인텔리제이 github 연결

  • (git을 설치하고 github 아이디가 있어야합니다.)
  • 먼저 인텔리제이를 실행합니다.
  • file -> setting을 눌러줍니다. (윈도우 단축키로는 ctrl+shift+s를 동시에 입력하면 됩니다)
  • 그 후에 왼쪽 위에 검색창에 git을 입력한 이후에 미리 설치 받았던 git을 연결해줍니다.
  • git을 올바르게 연결했다면 github도 연동해줍니다
  • 그 후에 레파지토리를 연결해 주는데 저는 제가 주로 했던 clone 방식으로 설명해 드리겠습니다.
  • 먼저 cmd 창을 열고 레파지토리를 다운로드할 경로로 이동합니다.
  • 그 후에 내가 작업을 할 레파지토리를 들어가서 초록색 code 버튼을 누르면 아래의 https 주소가 나옵니다.
  • url을 복사한 이후에 다시 cmd로 돌아가서 git clone (복사본)을 아래와 같이 입력해 줍니다.
  • 그러면 C:\LAB_PROJECT\YIU-AISL-YDrive-Server 이와 같이 프로젝트가 다운로드 되고 인텔리제이를 이용하여 open 하고 trust나 import 해줍니다.
  • 아래와 같이 프로젝트가 정상적으로 다운로드 됩니다.

commit

  • 이제 깃허브에 올리기 위해 push를 해야 하는데 그전에 제가 작성한 것을 commit을 해야 합니다. commit을 할 때는 기능 단위로 하는 게 좋습니다.
  • 간단한 랜덤 숫자 생성기를 만들고 이것을 출력하는 클래스를 만들었는데요!
  • 왼쪽의 commit 버튼을 누르면 이 프로젝트에서 코드가 생성되거나 없어졌거나 수정된 부분들만 볼 수 있는데요! 여기서 클래스를 더블 클릭하면 오른쪽에 수정된 부분이 나옵니다.
  • 현재 보고 있는 클래스 같은 경우에 기존에 제가 진행하고 있던 프로젝트를 가져와 보았는데요! 랜덤 한 숫자 6자리를 만드는 메소드입니다.
  • 새롭게 추가된 부분은 초록색 없어진 부분은 회색으로 위와 같이 보입니다. 여기서 이제 박스를 클릭하여 커밋을 하면 됩니다.
  • 위와 같이 코드 컨벤션을 지켜주면 좋은데요!
  • 위의 예시와 같이 새롭게 구현한 내용은 feat라는 문구와 함께 작성해 주고 이미 있는 코드를 수정하거나 전체적으로 수정한 경우에도 refactor을 이용하여 작성해 줍니다. 팀과 협업하는데 가독성을 높여주고 쉽게 파악할 수 있게 개발자들끼리의 약속 같은 거죠!
  • 위에는 간단하게 작성했지만 실제로는 위와 같이 제목을 쓰고 한 줄 넘기고 본문:이라고 작성하면서 디테일한 부분들을 작성합니다.

push

  • commit을 완료했다면 위의 push 버튼을 누릅니다.
  • 그러면 이와 같이 제가 commit 한 내역들을 볼 수 있고 푸쉬를 어디에 할지 정할 수 있습니다.
  • 이와 같이 푸쉬하고 레파지토리를 들어가면 내용이 새롭게 올라간 걸 볼 수 있습니다.

pull

  • pull은 제가 가져온 레파지토리가 최신화가 되었다면 그 정보들을 가져오는 작업입니다.
  • 저는 pull을 생활화해야 한다고 생각하는데요! 왜냐하면 누군가가 작업을 해서 push를 했다면 그 정보는 저한테 없습니다.
  • 그때 제가 그냥 작업을 하고 똑같이 commit을 하고 push를 하면 버전 충돌이 일어납니다.
  • 이를 방지하기 위해 항상 작업을 시작하기 전에 pull을 하는 생활화가 필요합니다.
  • 위와 같이 인텔리제이 밑에 있는 termial을 열고 git pull을 해주면 됩니다. 저 같은 경우에는 이미 최신 정보들을 다 가져와서 already up to date라는 문구가 나왔습니다.

참고자료 및 출처
https://www.youtube.com/watch?v=Fley6IFhlC8 - Git, Github의 개념과 초간단 깃허브 코드 올리기
https://yanacoding.tistory.com/4 - [Git] 깃(git)과 깃허브(github)란 무엇인가?
https://goddaehee.tistory.com/249 - [IntelliJ] IntelliJ + Github 연동하기
https://velog.io/@dongwan999/Git - 썸네일 사진

profile
알고리즘은 백준 허브를 통해 github에 꾸준히 올리고 있습니다.🙂

0개의 댓글