Study/코드프레소 java 웹개발 체험단

[실무자가 알려주는 Git입문]-1주차: Git의 이해와 실습

공부하기 좋은 날 2022. 1. 14. 04:03

코드프레소 체험단 활동으로 Git강의를 듣게 되었다. 그동안 GitHub, GitHub Desktop을 사용하여 파일을 많이 공유하고 관리하였었는데, 정작 Git의 작동 원리는 어렴풋이만 알고있었다. 이번 강의를 통해 git의 작동 원리와 개념들을 제대로 알게되어 프로그램 작동과 사용에 더욱 깊은 이해가 되었다. 1강을 들으며 강의 내용을 정리해보았다.

 

[ Git의 이해 ]


1. 형상 관리를 위한 Git


형상 : 모양이나 생김새
  소프트웨어에서의 형상 : 프로토타이핑, 와이어 프레임, 요구사항 명세서, 플로우 차트, 소스코드 등

  하나의 소프트웨어는 다양한 형상을 가지며,  요구사항에 따라 형상이 계속 변한다

형상 관리: 소프트웨어 개발 프로세스 각 단계에서 소프트웨어의 "변경점"을 추적하고 관리하는 모든 활동
  (SCM(Software Configuration Management))
  변경점의 관리는 점점 커지는 프로젝트 안에서 리스크를 최소화하고 품질을 확보할 수 있음

- 형상 관리의 대상: sw개발 단계에서 발생하는 모든 산출물 - 서비스 명세서, sw설계문서, 소스코드 등

- 소스코드 형상관리 도구 = git
  리눅스 커널의 소장인 linus torvalds는 svn, cvs, bitkeeper을 안쓰고 git을 만들어 사용

  - git의 목표: 1) 빠른 속도  2) 단순한 구조  3) 비선형적 개발  4) 완벽한 분산  5) 대규모 프로젝트

  * 완벽한 분산
  - 중앙 집중형 버전관리 : cvs, svn은 중요 데이터가 중앙 서버에 모여있음-네트워크가 없으면 안됨
  - 분산 집중형 버전관리 : git은 중요 데이터가 중앙 서버에도 있고 로컬 저장소에도 있으므로 네트워크가 없어도 로컬 작업 가능하고, 로컬에 파일이 저장되어있기때문에 복원도 매우 쉬움

2. git설치
https://git-scm.com./
에서 download 한다

디폴트 옵션을 선택하고 설치가 완료되면 git bash열고 git --version 확인하기

3. git의 기본개념

Git이 작동하는 과정

Git은 서버에 저장된 원격 저장소와 각자의 컴퓨터에 저장된 로컬 저장소를 활용하여 변경점이 있으면 업로드하고, 다른 컴퓨터에서 변경점을 업로드하면 다운받을 수 있는 클라우드 서비스처럼 작동한다.


 1) 저장소
  1-1) 원격 저장소(Remote Repository)
         : 서버에 저장된 공동의 소스코드


  1-2) 로컬 저장소(Local Repository)
          : 로컬에 저장되어 있는 소스코드

 


  2) Clone 
     : 원격 저장소에 있는 소스코드를 로컬저장소로 복사하여 받아오는 것

 


  3) 로컬저장소
     3-1) 작업 디렉토리(Working Directory)

        : pc에서 현재 작업중에 있는 디렉토리, git에서 관리는 하지만, 추적은 안함


 -> 3-2) 스테이징 영역(Staging Area)

        : 워킹 디렉토리에서 의미있는 변경점이 추가되었을 때 커밋을 준비하는 영역, 임시저장 영역


 -> 3-3) 로컬 저장소(Local Repository)

        : 커밋들이 영구적으로 저장되는 영역, 원격 저장소로부터 clone한 커밋들이 존재하는 영역
  


  4) 커밋
    git에서 가장 의미있는 변경의 단위
    "커밋하다"=변경점을 로컬 저장소로 저장한다
 

 

   5) Push

     : 로컬 저장소에 저장된 커밋들을 원격 저장소(서버)에 업로드하는것

 

 

   6) Pull

     : 서버의 원격 저장소에 새로 추가된 커밋들을 로컬 저장소에 받아오는

 

 

4. Git 명령어
-Git의 기본 개념을 이해했다면, git bash를 실행하여 명령어들을 실습해본다

-깃 버전 확인: git --version

-이름 설정: git config --global user.name "이름"


-이메일 설정: git config --global user.name "이메일주소"

-기본 에디터를 vim으로 기본설정: git config --global core.editor vim


-기본 정보 확인하기 : git config --global --list

-기본 설정 변경: vi ~/.gitconfig --> vi 에디터 명령어 사용해 수정

-폴더 만들기 : mkdir ~/폴더 이름

 

 

 

 

[Git flow 직접 해보기]


1) git 원격 저장소만들기

GitHub나 GitLab에서 로그인을 하고 서버에 원격 저장소를 하나 만든다.

이때 GitLab는
깃헙과 비슷한데
주로 회사에서 인트라넷에 연결하여 사용한다.
https://about.gitlab.com/
실습에서는 git lab을 사용한다.

 

Iterate faster, innovate together

GitLab's DevOps platform is a single application for unparalleled collaboration, visibility, and development velocity. Learn more here!

about.gitlab.com


git lab에 들어가서 로그인 후 creat a project를 하여 원격 저장소 생성

* 참고- 깃허브의 주요 회사들 오픈소스 프로젝트
: https://github/git/git
 https://github/naver, nhn,google,facebook,android

2) 로컬 저장소 만들기
- git bash에서 mkdir 명령어로 디렉토리를 하나 만듬
- 해당 폴더(워킹 디렉토리)에 가서 git init을 해주어 git을 사용할 수 있는 핵심파일인 .git파일을 생성한다.
- ls -la해서 .git파일이 생성되었는지 확인
- 현재 브랜치라는 master가 떴는지 확인


3) 원격저장소와 연결하기
- git lab에서 만든 원격 저장소와 연결하기
git remote add [저장소 별칭-기본적으로 origin][저장소 주소-git에 있는 프로젝트 http주소]
원격 저장소 등록 확인: git remote -v

= > 로컬 저장소를 생성하고 원격저장소와 연결하는 방법은 clone과 같다.
clone   =  로컬 저장소 생성->초기화(git init)->원격 저장소 연결(git remote add)


4) commit, clone, push, pull
* 현재 폴더 내 파일의 상태 확인하기: git status
* 커밋의 히스토리 확인 : git log

* 파일 생성 및 수정: vi 파일 이름.확장자
엔터쳐서 vi 에디터를 열고 i를 입력하면 insert입력모드로 변경
코드작성 후 esc키 + :wq + 엔터키 누르면 저장하고 에디터 종료

*파일 생성, 수정 및 저장을 하였으면 git status로 정보 확인

*작업 디렉토리의 파일상태
untracked=변경점은 발생했으나, git에 의해 관리되지 않은 파일
단 한번도 staging area(임시 저장 영역)에 포함되지 않은 파일

tracked = git에 의해 관리되는 파일
staging area에 한번 이상 포함된 파일
staging area에 변경점 추가하기: git add 파일이름.확장자


* 커밋
스테이징 영역에 의미있는 변경점들이 쌓이면 커밋해야 함
커밋을 어떨때 할지, 의미있는 변경점이 무엇인지 단위를 논의해야 함

[커밋 생성하기]
-git commit+엔터->vi 에디터가 나오면 커밋 메세지를 입력 후 esc+:wq+엔터
=
-git commit -m"커밋 메세지"


* 커밋 히스토리 확인: git log
커밋 아이디는 sha-1알고리즘이 적용된 해시값이 저장됨

* 파일 추가 수정: vi 수정할 파일이름 -> i를 누르고 코드 수정 후 esc +:wq+엔터

*변경된 코드 확인: git diff
*상태 확인: git status
파일이 한번 추가되면 git에 의해 관리됨



*git 명령어 옵션 정보 확인 : 명령어 --help하면 웹사이트에서 확인 가능

[커밋 히스토리 관련 옵션]
git log -u  : 해당 커밋과 함께 변경점을 보여줌
git log -u '커밋 아이디'  :  커밋 아이디에 해당하는 특정 커밋만 보여줌
git log -최대 출력할 커밋갯수 : 갯수는 숫자
git log --name-only  
git log -oneline
git show '커밋 아이디'

[커밋 되돌리기1]
마지막 반영한 최신 커밋 메시지를 수정하게 됨
git commit --amend하고 엔터치고 vi에디터에서 수정
이미 수정한건 되돌릴 수 없음
기존의 것을 덮어쓰기 때문에

[커밋 되돌리기 2]
git revert '마지막에 반영한 commit ID'
커밋의 히스토리를 유지하면서 내용만 롤백하는 방법
반영한 커밋을 롤백한다

[원격 저장소에 커밋 반영하기 = Push]

git push [저장소별칭] [원격브랜치]
ex) git push origin master하면 커밋된것들이 원격 저장소(서버)에 반영됨

로그인창이 안생기면 윈도우 자격증명 살펴보기

[git clone하기]

먼저 저장할 폴더를 하나 만든 후
git clone [해당 프로젝트 http주소]
하면 클론됨

git log --reverse 하면 깃 프로젝트의 최초 커밋부터 조회 가능


[git 초대하기]
git hub나 gitlab 사이트의 members탭에서 추가

[git pull, git push]
git pull [origin][master] 로 원격 저장소와 싱크를 맞추고
git push [origin][master] 로 커밋한것들을 푸쉬해서 서버에 올린다!!!



- 코드프레소 Java 웹 개발 체험단 활동 중
- 코드프레소 [실무자가 알려주는 Git입문]강의 수강 중
- 코드프레소 URL: https://www.codepresso.kr/



 

프리미엄 IT 교육 서비스 - 코드프레소

 

www.codepresso.kr