[Git] 기본 git flow 실습

하나·2022년 1월 31일
0

Git

목록 보기
3/5
post-thumbnail

1. 기본 환경 설정

# 기본 환경 설정
git config --global [user.name](http://user.name) “이름”
git config --global [user.email](http://user.email) “이메일주소”

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

# 설정 정보 확인
git config --global --list
# 기본 설정 변경, 변경 후 저장하고 종료 (esc + :wq)
vi ~/.gitconfig

# 실습을 위해 폴더 생성 (루트폴더 아래 gittest 생성)
mkdir ~/gittest

# gittest 하위로 이동
cd ~/gittest/

2. 원격저장소 생성

  • github, gitlab 등의 서비스를 이용
  • 깃허브 트랜딩 페이지 https://github.com/trending (인기있는 레포를 볼 수 있음)
  • 깃랩에서 원격 저장소 생성 (create new repository)

3. 로컬저장소 생성

my_project 라는 working directory 생성

cd ~/gittest
mkdir my_project
cd my_project
ls -la
# 로컬 저장소 초기화
git init

(1) git 의 핵심 폴더인 .git 폴더가 생성

(2) master 라는 기본 브랜치가 생성

  • .git 폴더: git 은 .git 폴더를 통해 해당 프로젝트에서 변경되는 파일들에 대한 추적/관리를 할 수 있음
# 원격 저장소와 연결, [저장소 별칭]은 저장소에 쉽게 접근하기 위한 일종의 변수 (default, origin)
git remote add [저장소 별칭] [저장소 주소]

# 현재 등록된 원격저장소
git remote -v

4. 기본 플로우 실습

  • 저장소를 생성하는 두가지 방법
  1. clone 하기
  2. 로컬저장소 생성 → 초기화(git init) → 원격저장소 연결(git remote add)
  • 상태 정보를 위한 기본 명령어
# 현재 폴더내 파일의 상태 확인
git status

# 커밋의 히스토리 확인
git log
# 파일 생성
vi [파일명]

# 파일 수정
# 1. i 입력하면 입력 모드로 변경
# 2. 코드작성
# 3. esc + :wq + enter : 저장 후 종료
  • 작업디렉토리의 파일 상태
  1. Untracked : 변경점은 발생했으나 깃에 의해 관리되지 않는 파일, 단 한번도 staging area에 포함되지 않은 파일
  2. Tracked : 깃에 의해 관리되는 파일, staging area 에 한 번 이상 포함된 파일
# 스테이징 영역에 변경점 추가
# 작업 디렉토리의 변경사항 중 커밋 예정인 파일들을 스테이징 영역에 추가
git add [파일명]
git status

[Tip] Warning 로그

Warning : LF will replaced by CRLF in TestService.java The file will have its original line endings in your working directory

아래 명령어로 경고 메세지 설정을 off 시키고 작업

git config --global core.safecrlf false

커밋 생성

  • 커밋의 단위가 너무 크면 다른 개발자들이 코드를 파악하기 어렵고 예상치 못하는 충돌이 벌어질 가능성이 높음
  • 깃은 SHA-1 이라는 해시알고리즘을 가지고 고유의 커밋 아이디를 만들고 있음.
# 편집기 열리면 커밋 메세지 작성
git commit

# 인라인으로 커밋 만들때
git commit -m "메세지"

# 커밋 히스토리 확인
git log

# 변경된 코드 확인, 작업 디렉토리에서 기존 코드 대비 변경점 확인
git diff 
# [Tip] git 명령어 옵션 정보 확인, 웹 브라우저를 통해 해당 명령어의 매뉴얼 페이지 실행됨
git log --help 
  • 커밋 히스토리 관련 옵션
git log -u # 해당 커밋과 변경된 내용
git log -u 'commit ID'
git log -1 # 최신 커밋을 기준으로 몇개의 커밋 내역을 불러올것인지
git log -2
git log --name-only # 변경된 파일의 이름 리스트도 확인 가능
git log --oneline # 커밋 하나 당 한줄로 보여줌
git show 'commit ID' # git log -u 'commit ID'와 동일
  • 커밋 되돌리기 1
#1) 커밋 메세지를 변경하고 싶을 때
# 마지막 반영한 최신 커밋 메세지를 변경하고 싶을 때, 최신 커밋 수정 가능한 에디터가 실행됨
# 되돌린 것은 복구할 수 없음 
git commit --amend

#2) 커밋에 추가할 변경점이 있을 때
# 파일을 수정 후, 스테이징 영역에 추가
# git commit --amend 명령어로 커밋 생성 

vi [파일명]
git add [파일명]
git commit --amend 
  • 커밋 되돌리기 2 (내용 롤백) 이미 커밋을 만들었는데 커밋 히스토리를 유지하면서 내용만 롤백하는 경우 히스토리 관리가 매우 중요한 실무에서 주로 사용됨
# 코드를 원복한다 = 반영한 특정 코드를 제거 = 변경을 취소 = 반영한 커밋 되돌리기 = revert
git revert '마지막 반영한 commit ID'
# 새로운 커밋을 반영할 수 있는 에디터 창이 뜸
# 깃의 히스토리는 유지되면서 (= log 에는 찍히면서) 내용은 변경됨

원격 저장소에 커밋 반영하기

git push [저장소별칭] [현재브랜치]

[Tip] HTTP Basic: Access denied (윈도우)

gitlab username, password 잘못입력했을 때 뜨는 에러

remote : HTTP Basic : Access denied

fatal : Authentication failed for

[해결방법]

  • 자격 증명 관리자 실행 일반 자격 증명에서 깃랩에 해당되는 내용 제거 후 다시 push 명령 시도

5. git 을 통한 협업

  • 원격/로컬저장소 생성

[방법 1]

  1. 로컬저장소 폴더 생성
  2. 로컬저장소 초기화
  3. 원격저장소와 연결

[방법2]

  1. 로컬저장소 폴더 생성
  2. 원격저장소 복사 (git clone)
# git clone 
# 로컬 저장소 생성
cd ~/gittest
mkdir git_project
cd git_project

# clone 할때는 git init 안해도됨
git clone [원격저장소 주소]
cd git
ls -la

# git log 오래된 로그부터 찍기
git log --reverse

참고 : 코드프레소 '실무자가 알려주는 Git 입문' 강의
코드프레소 체험단 활동을 통해 강의를 제공받았습니다
https://www.codepresso.kr/

0개의 댓글