///////
Search

Git & Source Tree

Git

형상관리툴이란?

소프트웨어 버전 관리 툴이라고도 한다.
소스의 변화를 끊임없이 관리
소스를 버전별로 관리하여 개발 중 소스를 삭제하거나, 수정하기 이전으로 돌아갈 수 있도록 도와주는 도구
코드 병합 및 수정된 소스 추적에도 유용

SVN, 중앙 집중식

2000년 CVS를 대체하기 위해 만들어짐.
저장소에 중앙 서버가 있으며, commit할 경우 코드가 중앙 서버로 전달된다.
자신만의 Version History를 가질 수 없음.
소스코드의 변경 사항을 추적가능
대규모 수정 작업을 안전하게 진행할 수 있음
직관적.
파일의 변화(차이점)을 저장

Git, 분산 관리식

매우 빠른 속도와 분산형 저장소
SVN보다 많은 기능을 지원하지만 사용의 난이도가 있음.
개인의 Commit History를 소유
순간의 스냅샷으로 저장

SVN, Git 차이

SVN
GIT
만들기
즉시 생성
즉시 생성
내려받기
전체 디렉토리 구조를 내려받음
필요 없음
브랜치 전환
직접 디렉토리를 이동
작업 파일들이 실시간 변경
병합
위치와 리비전을 명시, 복잡
빠르고 간편
1.
git은 로컬 저장소가 있으므로 네트워크에 접근할 필요가 없기 때문에 빠르다.
2.
git은 로컬 저장소에서 개발 및 정리 후 필요할 때 원격 저장소로 올림. svn은 커밋하는 순간 저장소를 공유하는 모든 개발자들에게 노출.
3.
원격 저장소가 사라지면 svn은 복구 불가하지만, git은 로컬 저장소에 사본을 들고 있다면 복구가 가능하다.
한번 개발하고 한동안 추가 개발 없음 → SVN
지속적으로 개발, 코드 안정성 필요 → GIT

설치

Bit bash명령어

CLI(Command Line Interface)명령어

ls : 목록 불러오기 (list 약자)
mkdir : 폴더(디렉토리) 생성
cd : 폴더(디렉토리) 이동
shift + insert : 붙여넣기
touch [file_name] : 빈 파일 생성
cp [file] [target_dir_name] : 복사
mv [file_name or dc_name] [target_dir_name] : 파일 또는 디렉토리 옮기기
rm [file_name] : 파일 삭제
rm -r [dir_name] : 폴더 삭제

git 명령어

git init : 저장소 만들기
git status : 현재 상태 확인
git add : 현재 상태 추적
git commit : 현재 상태 저장
git log : 이력 확인
git clone <URL> : 소스 코드 다운로드 / 복제
git branch : 브랙치 목록
git pull : 원격 저장소의 변경 내용이 현재 디렉토리에 가져(fetch)와 병합(merge)됨

GitHub 예제

echo "# temp" >> README.md git init git add README.md git commit -m "first commit" git branch -M main git remote add origin https://github.com/chordpli/temp.git git push -u origin main
Bash
복사

Source Tree

이론적인 Git의 흐름(Workflow)

흐름의 큰 그림이다.
1.
Local Repository
local로 지정한 레파지토리 폴더에 파일 세개를 만들었을 경우 Working directory에 들어간다.
2.
add
이처럼 add명령어는 “변경된(or 새로운) working directory의 파일”“Staging Area로 보내주는 역할”을 한다.
Staging Area는 “Commit”을 할 준비가 된 파일들을 “Git directory에 저장하기 전에 대기하는 장소” 이다.
Working directory
Untracted: 현재 git이 관리를 하고 있지 않은 파일
Tracked: 현재 git이 관리를 하고 있는 파일
Working directory에 있지만, 단 한번도 add나 commit이 되지 않는다면 Untraced로 남고 git은 이를 관리하지 않는다.
3.
commit
위의 그림과 이어져있지 않아 혼란스러울 수는 있겠지만 commit에서는 단순히 StagingArea 에서 Git directory로 넘어가는 부분만 확인해주면 된다.
StagingArea에 있는 것들을 메시지와 함께 commit 해주는 것이다.
4.
push
Github Repository를 만들어서 로컬저장소와 원격저장소를 연결해준다.
이후 push를 통해 github에 나의 코드를 올릴 수 있다.

Source Tree로 GUI환경에서 실습해보기

1.
SourceTree 다운로드
2.
Local Repository
+ Create 로 새로운 레파지토리 생성
로컬에서 해당 경로를 찾아서 입력해주기
생성버튼 누르기
3.
add
“변경된(or 새로운) working directory의 파일”을 StagingArea로 보내주는 역할
보라색 : 반영되지 않은 파일
초록색 : 반영된 파일 / commit전 올릴 파일을 선별하는 것
+ , - 로 자유자재로 올리고 내릴 수 있음
4.
commit
add후 commit 메세지 작성
5.
Remote Repository
git에 올릴 레파지토리 만들기
Repository name: 레파지토리 이름
Description : 해당 레파지토리 설명
public & Private: 공개 & 비공개
Add a README file : 레파지토리 소개가 가능한 설명 파일(reademe) 자동생성 여부
readme를 체크하게 되면 파일이 기존 파일과 변경사항이 있기때문에 먼저 pull동작을 해주어야 한다.
모든 항목 설정 후 Create repository 클릭
f.
local Repository 와 Remote Repository 연동 (원격 저장소 추가)
로컬에서 만든 레파지토리와 git의 레파지토리를 연동하는 작업
저장소 > 원격 저장소 추가..
git repository Https링크 복사 후 url경로에 넣기
브런치 이름변경
git bash 에서 git branch -M main(브런치명) 명렁어로 가능
sourceTree에서 브런치명 변경도 가능
push버튼을 눌러 해당 브런치를 선택후 push
git에서 올라간 파일과 commit명 확인