티스토리 뷰
버전 관리 시스템(형상 관리 시스템)
원하는 시점(버전)으로 이동할 수 있으며, 각 버전별로 여러 개발자가 협업할 수 있는 최적의 환경을 제공하는 시스템
SVN
작업 내역 커밋 시 변경사항과 히스토리가 즉시 서버로 전송되기 때문에 관리가 용이하다.
또한 간단한 설치와 사용방법으로 별도의 교육 없이도 초보자도 쉽게 사용할 수 있다.
하지만 항상 원격 저장소(SVN 서버)를 필요로 하며 서버 간 버전 관리가 힘들다.
장점
1. 커밋, 체크아웃만 하면 된다. >> 편하고 쉬움
단점
1. 1번이 잘못된 코드를 커밋하면 서버가 박살남.
2. 백업이 따로 없음. >> 백업파일을 따로 만들어야 함.
3. 보안이 약함.
4. 충돌이 발생하면 고치기가 힘듦. 작업의 손실. 위험함.
Git(분산형 버전 관리 시스템)
SVN이 가지고 있던 클라이언트와 서버 간의 버전 관리 문제를 많이 보완해준 시스템.
서버 뿐만 아니라 로컬에서도 버전 관리가 가능하며, 로컬이 서버가 될 수 있고, 서버도 로컬이 될 수 있다.
브랜치라는 개념을 사용하여 개발자 마음대로 로컬 환경에서도 커밋과 버전 관리가 가능하다.
메인서버 = organization
: CTO나 팀장이 관리
개인서버는 여러 개의 로컬을 둘 수 있다.
여러 개의 로컬로 여러 버전을 관리할 수 있다.
A1, A2, A3은 다 다른 버전이다 >> 브랜치
여러 버전을 합칠 때는 merge를 사용하여
서버에 push한다.
서버에 올릴 때는 push
서버에서 받을 때는 pull
프로젝트를 하나만 만들고 각각의 버전을 깃에 저장해놨기 때문에 명령어를 통해서 개발 환경을 가져와서 심는 것임.
하나의 컴퓨터, 하나의 폴더, 하나의 파일에서 가능함.
하나의 파일이 깃에 등록되는 순간 커밋할 때마다 여러 개의 파일이 깃 안에서 생기는 것임.
로컬에서는 하나의 파일임.
Git ≠ Git-Hub
git : 로컬 관리
gitHub : 서버를 제공(서버 관리와 커뮤니티가 잘 되어 있음)
Git-Hub(분선형 버전 관리 공유 서버)
Git으로 관리하는 프로젝트를 호스팅하는 사이트 중 하나이다.
로컬 저장소에서 작업하던 파일을 다른 클라이언트와 공유하기 위한 서버이다.
-------------------------------------------
Git 설치
git 검색 > Git - Downloads (git-scm.com) 최신버전(2.33.0.2) 다운로드 > Next > C:\Git > Next > Next > Next
> Use Vim > Let Git decide > Use Git from Git Bash only > Use bundled OpenSSH
> Use the OpenSSL library > Checkout Windows-style,... > Use MinTTY > Default >
> Git Credential Manager Core > Enable file system caching > Install
(마지막에 Launch Git Bash, View Release Notes 체크 no!)
설치한 git 폴더에 우클릭해서 Git Bash Here라고 나오면 성공!
-------------------------------------------
저장소의 종류
- 로컬 저장소(local) : 개인 전용
- 원격 저장소(remote) : 공유 전용 (깃허브에서 로그인 하고 나서 진행)
작업 트리(Work-Tree)
폴더 또는 디렉토리를 의미한다.
**순서
명령어
1.스테이징 - add
작업 트리를 커밋하기 전 작업 트리의 파일 상태를 기록하는 임시 공간.
커밋하기 전 반드시 커밋할 내용은 인덱스에 추가되어야 하며, 이를 스테이징이라고 한다.
변경한 모든 파일을 커밋하지 않고, 원하는 파일만 골라서 스테이징을 하게 되면 인덱스에 등록된 파일들만 커밋된다.
인덱스에 등록되지 않은 파일들은 커밋이 될 수 없다.
- 작업 파일을 인덱스에 올리는 작업
2.커밋 - commit
버전을 만들 때 사용한다.
예를 들어 A와 B라는 파일을 하나의 버전으로 관리하고자 할 때 커밋을 사용한다.
커밋 시 고유한 커밋 아이디가 부여되며, 원하는 버전으로 돌아갈 때 커밋 아이디 중 앞 7글자를 사용한다.
c언어; 포인터 -> 주소(자바에서는 해쉬)
버전이 있는 곳을 가르킨다. 메모리 상으로는 주소를 가리킴.
3.체크아웃 - checkout
원하는 버전 또는 브랜치로 이동하고 싶을 때 사용한다.
체크아웃 명령어 뒤에 커밋 아이디 전체 또는 앞 7글자를 작성하면 해당 버전으로 이동하게 된다.
4.브랜치(Branch)
한 개의 저장소를 여러 갈래로 나누어 관리할 수 있다.
각각의 독립된 Branch에서는 각각의 개발자들이 기존 버전과 비교를 하거나
버그를 테스트하는 등 협업을 위해 필요한 목적으로 사용할 수 있다.
커밋을 통한 버전 관리는 한 가지의 커밋 히스토리 경로를 가지지만
브랜치를 나누면 커밋 히스토리를 여러 경로로 나누어 사용이 가능해진다.
5.푸쉬 - push
로컬 저장소에 커밋한 파일들을 원격 저장소에 추가하는 명령어이다.
6.풀 - pull
원격 저장소에 있는 파일들을 로컬 저장소로 전달받는 명령어이다.
7.클론 - clone
원격 저장소에 있는 파일들을 새로운 로컬 저장소로 복사하여 전달받는 명령어이다.
--------------------------------------------
Git Bash
로컬에서 깃 사용하기!
1.깃을 사용할 폴더를 우클릭해서 Git Bash Here 클릭 >> 클릭된 폴더(워크트리)가 깃 저장소로 인식됨.
2.터미널(Git Bash)이 뜬다. (ctrl + 마우스 휠 : 글자 크기 조절)
: 해당 폴더를 깃에서 관리하겠다. 해당 폴더 안에 숨김 폴더로 .git 폴더가 생김. (clone 할 때에는 사용하면 안 됨!!) |
|
: 이메일로 커밋한 사람을 알 수 있음. config : 설정 --global : 옵션주기 user.email "" : 깃허브 이메일 작성 |
|
: 깃허브의 username 작성 | |
: 정보가 잘 저장되었는 지 확인하기 (아래방향키로 눌러서 user.name, user.email 확인하기) (제일 처음에 등록하면 그 이후엔 자동으로 되어 있음) q를 누르면 나와진다. quit의 약자임. |
|
: 현재 깃의 상태(워크트리의 상태) | |
: add 명령어 사용, 스테이징, 파일명.확장자까지 작성. add뒤에는 경로를 쓰는 것임. 현재 경로에 있을 때는 상대 경로 사용 가능. 오류가 없으면 성공한 것임. |
|
: 스테이징을 내리기 위해 쓰는 명령어 (rm = removed) |
|
: 현재 폴더에 있는 거 싹 다 staging | |
(한글 자간이 저렇게 크게 되어 있는 거.. 정상이다) |
: commit 명령어 사용, 커밋을 할 때는 무조건 메세지를 써야 한다. |
: 커밋이 되었는 지 확인하는 명령어 | |
: 최근 커밋의 내용을 수정 >> 엔터를 누르면 편집기가 나옴 (편집기에서) 뭔가를 작성할 때는 i 입력하고 엔터 ( insert ) >> 내용 수정하기 저장하려면 ESC 누르고 :wq 엔터 저장안하고 나갈거면 :q 저장하고 나갈거면 :wq |
|
: git log에서 나오는 내용이 한줄로 요약되어서 나옴 | |
: checkout 명령어 사용. 이동하고 싶은 버전의 커밋아이디 7자리를 노란색에 작성함. 복사, 붙여넣기는 ctrl+c,v 사용하지 말고 우클릭해서 복사,붙여넣기 하기!! |
|
: 제일 최근 커밋으로 이동 - : 제일 최근이라는 뜻 |
$ git status 사용 결과 | |
: 커밋할 게 없다는 뜻. | |
빨간 글자면 staging이 안 된 것임. | |
초록 글자면 staging이 된 것임. 커밋할 수 있는 상태임. | |
new file | : 새롭게 추가한 파일 |
modified | : 수정된 파일 |
: 워크트리가 깨끗하다. |
$ git commit -m "메세지" 사용 결과 | |
[브랜치이름 (브랜치포지션-commit) 커밋아이디7자리] 메세지 | 브랜치이름 : master root는 가장 최상위 디렉터리 |
$ git log 사용 결과 | |
commit 커밋아이디 (HEAD -> master) | master 브랜치의 현재 커밋시점이 HEAD이다. 브랜치 별로 HEAD가 있다. master는 브랜치명이다. |
Author : username <userId> | |
Date : 커밋한날짜시간 | |
커밋메세지 |
$ git log --pretty=oneline 사용 결과 | |
커밋아이디 (HEAD -> master) 커밋메세지 |
* 리눅스 우분투 기본 명령어 공부하기
원격에서 깃 사용하기!
1.깃허브에서 new repository 만들기
저장소를 만드는 것은 원격, 공유할 수 있는 서버를 만들겠다는 뜻! 원격 저장소를 만들겠다는 뜻.
깃허브 서버에 나의 로컬 상태를 저장하는 것임. 컴퓨터가 망가져도 나의 로컬 환경을 그대로 쓸 수 있다.
Repository name은 로컬 이름과 동일하게 하기.
Description : repository의 설명글. 선택 사항임.
public / private 설정
README : 저장소에 대한 설명을 쓸 때 작성하는 파일, markdown파일이여서 확장자가 .md임.
markdown 언어 : markup언어와 비슷하긴 한데, 태그로 있지 않고 느낌표, 골뱅이를 사용해서 표시를 하는 언어
gitignore : 개인설정 파일을 공유할 필요가 없음. 매번 스테이징할 때 파일을 골라서 하는 것보다 애초에 막아주는 것이 편함. 공유 금지 시키는 파일의 목록을 작성하는 파일임.
CREATE !
https://~~~.git : 원격저장소 url
2.git과 github 연동하기
원격저장소 url 작성 |
: remote 원격 >> 원격에 대한 작업을 하겠다~ origin : 원격저장소 이름 원격저장소 이름은 사용자가 정하면 되지만 보통 자주 쓰는 원격저장소의 이름을 origin이라고 많이 사용함. 오류가 없으면 성공한 것임. |
실행하면, 추가해놓은 원격저장소의 이름들의 목록이 뜸. (origin) 원격저장소와 연결이 되어 있는지 확인하기 |
|
-v : 자세히 보기 ( view ) 원격저장소의 이름과 url이 나옴. 2가지 만들어짐. (fetch) : 새로고침용(임시영역) (push) : 업로드용 |
|
: push 명령어 사용. push 원격저장소이름 브랜치이름 >> 로그인하라는 창이 뜸! 로그인하면 바로 push됨. 창이 안 뜰 경우, 인증정보 삭제하기 |
|
원격저장소 url 작성 | : clone (클론할 경우, $ git init 하면 충돌생김.) clone 폴더부터 생성됨. |
원격저장소 url 작성 |
원격저장소url 뒤에 한칸 띄고 .을 써야 현재 경로에 생성됨. |
: pull 명령어 사용. pull 원격저장소이름 브랜치이름 |
--------------------------------------------
인증정보 삭제(깃허브 인증키 삭제)
바탕화면에서 자격 증명 관리 열기 > windows 자격 증명 > git으로 시작하는 항목 다 제거하기!
목록에 git이 하나도 없어야 함.
**강제 push
git push -f origin master
'2022 > git' 카테고리의 다른 글
day02[gitignore,PR] (0) | 2022.09.23 |
---|---|
day01[Sourcetree, 브랜치] (1) | 2022.09.22 |