[엘리스 SW트랙 4기] 1주차 - Day5 - Git

랸나·2023년 3월 5일
0
모르는것, 새로 배운것, 헷갈리는 것 위주로 정리하기.
오늘의 느낀점 : 엘리스 강의는 하루지만, 실제 실습으로 복습하는 것이 좋아보인다. 
그리고 유튜브에서 추가 강의를 듣는 것이 좋을듯. 

1. Git이란?

  • 효율적인 협업과 버전 관리를 위한 오픈소스 툴 (깃허브, 깃랩, 비트버켓)
  • 파일의 이름을 더럽히지 않으며 버전을 관리하기 위한 것
    • 가지치기와 병합
    • SUBVERSION에 비해 가볍고 빠름
    • 분산 작업
    • 데이터 보장
    • 준비 영역
    • 오픈소스

2. Git 시작하기

  • 사용자 정보 설정
	$git config --global user.name "hanna"
    $git config --global user.email hannaryu@hanna.com
    
    # 만약 프로젝트마다 다른 정보 사용한다면 --gloabl 없이 작성
  • 사용자 설정 정보 확인
	$git config --list
  • Git 저장소 생성 - 기존의 디렉토리를 git repository로 설정
	$git init
    Initialized empty Git repository in /Users/hanna/git_test/.git/
  • 파일 영역의 라이프사이클

  • 파일의 상태 라이프 사이클

  • 새로운 파일 생성해서 준비 영역(스테이징 에리아) 로 보내기

$git add comment.js
$git add . 
# 추가할 파일이 폴더 내의 전부라면, .으로 폴더 내 전체 파일을 지정할 수 있음. 
  • 파일의 상태 (스테이징 단계) 확인
$git status
On branch masterChanges to be committed:(use "git reset HEAD <file>..." to unstage)modified:   comment.js
  • git 저장소 반영 (스테이징 > 레포지토리)
$git commit
$git commit -m "작성하고 싶은 메시지 넣기"
  • 메시지 변경
$git commit --amend
  • 스테이징 파일 확인 / 깃 레포짓토리 히스토리 확인 / add 명령 취소
$git status   		>> 스테이징 파일 확인
$git log			>> 깃 레포짓토리 히스토리 확인
$git reset <file_name>			>> add 명령 취소
$git diff			>> commit된 파일 중 변경된 사항을 비교할때
  • log 옵션들
git log -p -2 			>> 각 commit의 수정 결과를 보여주는 diff와 같은 역할 수행. 
						>> -n 상위 n개의 commit만 보여줌.
                      
git log --graph			>> commit간의 연결 관계를 아스키 그래프로 출력
git log -S function_name >> 코드에서 추가되거나 제거된 내용중 특정 텍스트가 
							포함되어있는지 검사 (위에서는 function_name)
                      

3. Git 가지치기

  • Branch란, 독립적으로 어떤 작업을 진행하기 위한 개념. 각각의 브랜치는 다른 브랜치의 영향을 받지 않음.

  • 메인 branch vs 토픽 branch

    • 기능 추가나 버그 수정과 같은 단위 작업을 위한 브랜치
    • 메인 브랜치는 배포할 수 있는 수준의 안정적인 브랜치
  • 브랜치 생성 / 확인

$git branch 브랜치명 		>>> 브랜치 명으로 브랜치 생성
$git branch 			  >>> 브랜치 목록과 현재 브랜치 확인
$git checkout 브랜치명 		>>> 브랜치 전환(HEAD 라고 명시된 것이 현재 브랜치)
  • git navigation
git checkout <snapshot hash>
체크아웃은 브랜치 전환에도 쓰이고, git log로 확인한 snapshot을 넘나들때도 사용 가능.
  • Git 병합
$ git merge 

헷갈리는 개념 : fast - forward > 다시 공부하기 
  • 커밋 그래프
$git log --graph --all

$git log --pretty=oneline--graph --all
*c3360a...(HEAD->master) add master
|  *782d90...(like_feature) add like_feature
| /
* 1c7881... initgit
  • git branch 삭제
$git branch -d <branch name>
  • Merge conflict : Merge 한 두 branch에서 같은 파일을 변경했을 때 충돌 발생
$git merge like_featureAuto-merging comment.js
CONFLICT (content): Merge conflict in comment.js
Automatic merge failed; fix conflicts and then commit the result.

##깃 충돌 발생하면 어디 파일에서 발생했는지 파악해야함. 

$git status

$git status
On branch master
You have unmerged paths.(fix conflicts and run "git commit")

Unmerged paths:
	(use "git add <file>..." to mark resolution)

		both modified:      comment.js
no changes added to commit (use "git add" and/or "git commit -a")

## 그 다음 git add와 commit 과정을 다시 거쳐서 merge 진행하기. 

4. Git 원격저장소

  • 원격 저장소 : 인터넷이나 네트워크 어딘가에 있는 저장소
  • git clone : 기존의 git repository를 복사
$git clone https://gitlab.com/alwys/myproject.git
$git remote add origin https://gitlab.com/group/project 	>> 원격 저장소 연결
$git remote 			> 연결된 원격 저장소 확인
$git remote show origin 			> 원격 저장소 살펴보기
$git remote rename origin git_test 			> 원격 저장소 단축 이름을 origin에서 git_test로 변경
$git remote rm git_test 			> 주소가 변경되거나 필요 없어진 저장소 삭제 
  • pull : 원격 저장소에서 데이터 가져오기 + 병합(MERGE)
  • fetch : 원격 저장소에서 데이터 가져오기 (데이터를 가져오긴 하지만 병합을 해주진 않기 때문에 병합까지 해주고 마무리해야함.)
  • 저장소 발행 : 로컬 저장소에서 작업한 내용을 원격 저장소에 반영. 다름 사람이 먼저 Push한 상태에서는 push 불가. 다른 사람이 작업한 것을 merge부터 해야함.
$git push origin master
  • orgin/master
git remote add originhttps://github.com/group/project

>> 내 컴퓨터에 저장되어 있는 저장소와 원격 저장소를 연결하기 위한 명령어. 이는 원격 저장소의 단축 이름을 Origin으로 지정한다는 의미임.
>> 디폴트값이 Origin. clone으로 복사해 온 저장소는 origin임. 


git remote -v 
>> 저장소의 이름과 주소를 볼 수 잇음. 

5. Git 파고들기

profile
백엔드개발자

0개의 댓글