Git 기초

사공 오·2022년 3월 24일
0

Git 기초 공부

목록 보기
1/1
post-thumbnail

패스트캠퍼스의 '프론트엔드 개발 올인원 패키지'에 포함되어있는 짧은 깃 강의를 들었었는데 들은지도 오래되었고, 쓸 일이 없다보니 아직 채득하지 못해
드림코딩 by 엘리의 깃 강의
를 들었는데 전체 강의가 무료인줄 알고 들었으나, 해당 유튜브에 올라온 것은 깃 강의의 일부분이고 드림코딩 사이트에서 나머지 강의를 들을 수 있다.
시간이 되면 이전에 들었던 패캠의 강의를 다시 듣던지, 결제하여 나머지 강의를 수강하고자 한다.

Git

깃이란 버전을 편리하게 관리할 수 있도록 도와주는 도구로,
vcs(version control system) 중 하나이다.

코드뿐만아니라 텍스트, 그래픽레이아웃 파일도 관리할 수 있다.

버전관리 도구의 종류

Centralized version Control
ex) cvs, subversion, perforce

  • 서버에 히스토리를 관리해서 즉각적 동기화가 일어남
  • 문제점) 서버에 문제가 생기면 많은 개발자가 일을 하지못하고, 오프라인 상황에서도 하지 못한다.

Distributed Version Control
ex) git, mercurial, darcs

  • 서버뿐아니아 모든 개발자가 히스토리 정보를 가지고 있는 분산된 시스템
  • 각각의 개발자가 동일한 정보를 가져서 복구가능
  • 오프라인 가능
  • 이때의 server는 (1)회사의 경우 프라이빗 서버를 이용 (2)github나 bitbucket같은 클라우드를 사용
  • cvcf의 문제점을 보안했다.

Git의 역사

리눅스 커널 팀이 버전 관리 시스템으로 - Bitkeeper 도입
-> but 유료화
-> 앞전의 서비스를 디벨롭하여 Linux Torvalds가 깃을 출시


steam of snapshots

  • 버전마다 똑같은 부분은 이전의 해당파일에 링크를 걸어놔서 스냅샷이 무겁지않고 버전사이의 이동이 자유롭다.

Git을 써야하는 이유

  • 점유율이 높고
  • 무료이며
  • 오픈소스
  • 모든 동작 빠른
  • 오프라인
  • 실수 고치기 쉬움
  • 쉽고 빠른 브랜치가 가능

명령어를 기본으로한 명령어 프로그램이기에
터미널에서 커멘드로 배워야지 깃을 정확하게 사용하는 법을 배울 수 있다.

쉬운 사용을 돕는 Ui도 다수 있다

  • SourceTree (대중적)
  • Github Desktop(기능이 많지않음 추천x)

맥북에 깃 설치하기

깃 설치방법 및 git config 설정
상단의 링크를 참고하여 m1 맥북에 깃을 설치했다.



git config

.gitconfig - 깃과 관련된 모든 정보 저장되어 있음

git config —list //모든 정보확인 가능 
단축키 q 누르면 다시 터미널로 돌아온다

git config —global - e //터미널 확인 가능

git config —global core.editor “code”
git config —global - e //하면 비스코에서 확인 가능
git config —global core.editor “code —wait”
git config —global - e //하면 비스코에서 확인 가능 + 터미널의 다른 거 실행되지않고 터미널이 기다리고 있다

git config global  user.name “ony540” //사용자 이름 설정
git config —global  user.email “onyy540@gmail.com” // 사용자 메일 설정

git config   user.name
git config   user.email 로 확인할 수있다

+ OS에 따른 설정

git config —global  core.autocrlf input //맥사용자
git config —global  core.autocrlf true //윈도우,리눅스 사용자

운영체제마다 에디터에서 새로운 줄바꿈할때 들어가는 문자열 다름
윈도우는 \r\n 사용 ( carriage-return / line-feed
맥에서는 \n 사용

깃 히스토리나 블레임보는데 오류 생길수 있어서 설정하는 것!

Git 명령어의 구조

기본적인 깃 명령어의 구조 ( git command option )
ex) git config -e
git add *.txt


터미널에서 깃 시작학기

cd projects  // 폴더안에 들어가기
mkdir git // 깃이라는 디렉토리 만들기
cd git 
ls -al //안에 들어있는 것 확인
git init // 깃초기화 -깃추가
ls -al // .git 숨겨진 폴더 확인가능 앞에 .이있으면 숨겨져있다는 것을 의미한다

기본적인 터미널 명령어 & 깃 초기화

open .git // 깃폴더가 열린다

초기화하면 기본적으로 마스터 브랜치가 생긴것을 확인 가능

rm -rf .git // 깃을 제거하기
ls -al// 더이상 깃프로젝트가 아님 

git status  // 깃 상태확인

git config --global alias.st(단축기) status(기존 명령어)
 git st // git status와 동일한 기능 실행된

git config -- // 하면 명령어의 해당 명령어의 옵션을 확인할 수 있다.

깃 제거, 상태확인, 단축어 설정, 명령어 옵션확인


workflow

세가지의 작업 환경

working directiory
프로젝트 파일을 수정하는 파일이 있는
-untracked / 처음만들거나 깃을 초기화한 파일
-tracked / 이미 트래킹하고 있는 파일 (unmodified 수정되지않음 / modified 수정됨 >> 얘만 스테이징 에리아로 이동가능 )

staging area
버전히스토리에 저장할 준비가 되어있는 파일을 옮겨두는
-> commit 명령어를 사용해서 디렉토리로 보냄

.git directory
버전의 히스토리를 가지고 있는
디렉토리에서 >checkout 워킹으로 이동가능 (로컬 피씨에 저장되는 것)
-> push 명령어로 리모트 깃허브에 이동시킴
-> 다시 가져올땐 pull

++커밋

  • 각각의 버전 커밋에는 스냅샷에 대한 정보를 포함한 해시코드 부과됨
  • 해시태그 아이디로 버전 참조가능
  • 어떤 버전, 메세지, 작성자, 날짜와 시간 정보 포함



터미널에서 기본적 파일생성, git add,rm a.txt , .gitignore

echo hello world > a.txt
hello world가 a.txt에 들어가서 파일 생성 
x터미널 단축키 방향 위화살표 하면 위의 명령어 복사

git add *.txt 모든 txt 파일 커밋 준비됨 

echo ony >> a.txt 파일에 ony 추가됨

 상태확인하면 ) modified : a.txt 확인가능

git add * // 안에있는 전부 스테이징 에리아로 이동

rm a.txt // 해당파일 삭제

삭제후 나머지를 add 하면

deleted : a.txt 확인가능

git add . //모든 파일을 포함해서 스테이징에리아에 추가됨

깃 허브에 올리고 싶지않은 파일이 있다면
echo  *.log > .gitignore
모든 .log 파일을 보이지않는 .gitignore에 넣기

git diff, cat file

커맨드 k 터미널이 깨끗해짐

git status -s // 정보 짧게 볼 수 있는 방법

git diff

diff - a/ (이전버전을 의미)  스테이징에리아에 변경된 버전이 있다면 

현재 수정된 b/ 안의 파일을 비교

어떻게 변경하면 좋은지 알려줌
@@ -1 +1,2 @@

( -) 이전파일을 의미함 1번째 줄을 보고 
변경된 사항(+)은 1에서 2줄까지 확인해

+ 다음에 변경된 내용이 나옴 삭제가 되었다면 마이너스로 나옴

q 눌러서 다시 나오기

cat c.txt //안에 내용 확인 가능

git commit

git diff --staged // 이때까지의 흐름 확인 가능
git diff --cached

git config --global -e // config 수정가능


git commit // 옵션 하면 기본적 템플릿이 나옴

보통 타이틀 작성

상세설명 작정한다 저장하고 파일 닫으면

마스터 브랜치의 해시코드] 타이틀 
다른 정보들 확인 가능

git log // 히스토리 확인가능
커밋 전체 해시코드 누가 언제 누가했는지 타이틀과 설명 확인 가능

git commit -m "second commit" // -m메세지 “안에 넣을 메세지”

하고 로그확인하면 두번째 커밋 확인 가능

git commit -am //스테이징이랑 워킹 디랙토리모든 파일을 메세지와 함께 커밋한다 ! !

어떤 규모의 커밋이 적당할까?

히스토리의 창고를 한번에 많이 넣는게 아니라
작은 단위로 커밋을 하는 것이 의미있다.

의미있는 단위와 이름으로 !
ex) 프로젝트 포기화 커밋
로그인서비스 모듈
유저 리포리지토리 모듈

보통 커밋은 동사원형으로 사용 add fix 등

그 커밋메세지의 네임밍에 맞는 코드만 넣기 !

소스트리

  • 원하는 코드 줄만 선택하고 코드뭉치 스테이지에 올리기 / 스테이지 내리기를 통해서 유아이에서 좀더 세분화시켜 커밋할 수 있다

0개의 댓글