본문 바로가기
앨리스 AI

앨리스 AI 트랙 1주차 GIT

by kjwkjw 2021. 6. 22.

 

Git을 사용한 버전관리

 

파일의 영역 라이프사이클

 

working directory -(git add)> staging area -(git commit)> repository

 

파일의 상태 라이프사이클

 

untrackted: working directory에 있는 상태 또는 unmodified에서 파일을 지운 상태

unmodified: staged에서 commit을 하여 다시 변경된 상태, git 저장소에 있는 파일과 내용이 같음을 보장할 수 있다.

modified: unmodified에서 수정이 일어나 변경된 상태

staged: 세가지 상태에서 git add로 추가를 했을 때 변경된 상태

 

git 관리상태를 확인하는 명령어

 

git status: staging file들의 상태를 확인한다.

 

git log: git repository에 존재하는 history를 확인할 수 있다.

log의 옵션들

-p,--patch: 각 commit의 수정결과를 보여주는 diff와 같은 역할을 수행한다.

-n: 상위 n개의 커밋만 보여준다.

--stat: 어떤 파일이 수정되고 변경되었는지, 파일 내 라인이 추가되었거나 삭제되었는지 확인

--pretty=oneline: 각 커밋을 한줄로 출력

--graph: 커밋간의 연결된 관계를 아스키 그래프로 출력한다.

-S function name: 코드에서 추가되거나 제거된 내용 중 특정 텍스트(위에서는 fuction name)가 포함되어있는지 검사

 

git diff: commit된 파일 중 변경사항을 비교할 수 있다.

이외 명령어

git reset: git add를 취소시킨다.

 

간단한 git 실습

 

1. git status로 현재 디렉토리에서 git의 상태를 확인함

2. git add로 crawling.py 파일을 stage area에 올림

3. git commit으로 crawling.py를 repository에 올림

4. git log로 commit의 history를 확인함

 

 

git 가지치기

 

git branch: 독립적으로 어떤 작업을 진행하기 위한 개념, 각각의 branch는 다른 branch의 영향을 받지 않는다.

 

branch 는 두가지 종류가 있다. 배포할 수 있는 수준의 안정적인 branch인 메인 branch와 기능을 추가하거나 단위작업을 위한 토픽 branch가 있다.

 

branch 명령어

 

git branch: 현재의 branch 상태를 확인할 수 있다.

git branch 브런치이름: branch를 생성한다.

git checkout 브런치 이름: 해당되는 branch로 전환한다.

 

git branch  간단한 실습

 

1. git branch로 현재 branch 상태를 확인했을 때 master branch만 존재하고 선택됐다.(*표시가 옆에 있으면 현재 개발중인 branch라는 뜻이다.)

2. git branch로 elice라는 branch를 생성했고 git branch로 생성됐음을 확인할 수 있다.

3. git checkout으로 elice branch로 전환을 했고, 확인을 했을 때 *표시가 elice옆에서 나타난걸로 보아 정상적으로 전환됐음을 알 수 있다.

 

 

branch 병합하기

 

git merge: master에서 브런치를 병합할 때 사용하는 명령어다.

간단한 실습

1. git branch로 확인을 했을 때 add_app브런치와 master브런치가 있고 현재 add_app 브런치에서 개발을 하고 있음을 알 수 있다.

2. git log로 history를 확인했을 때 commit이 있는 것을 알 수 있다.

3. master에서  add_app을 병합하기 위해 checkout으로 브런치를 전환한다.

4. git merge로 병합을 시도했을 때 문제없이 병합됐음을 알 수 있다.

 

브런치의 충돌을 해결하는 방법

작성중

 

git 원격 저장소

원격저장소란 인터넷이나 네트워크 어딘가에 있는 저장소다.

 

원격 저장소를 받아오는 명령어: git clone

 

git clone [repository 주소] : 기존의 git repository를 복사한다.

 

원격 저장소를 아래와 같은 명령어로 연결할 수 있다.

git remote add origin http://gitlab.com/group/project 

gitlab.com은 호스트명, group는 그룹명, project는 프로젝트명이 들어간다.

origin은 원격저장소의 이름이다.

 

다음과 같은 명령어로 origin 원격저장소의 이름을 git_test로 변경할 수 있다.

git remote rename origin git_test

 

원격 저장소를 동기화하기

 

pull: 원격저장소에서 데이터를 가져오기 + 병합

즉 pull을 사용하면 원격 저장소에서 데이터를 가져와 로컬데이터와 병합한다.

fetch: 원격저장소에서 데이터를 가져오기

 

저장소 발행하기

git push origin master 

원격 master branch에 저장된 내용을 origin 원격 저장소에 반영한다.

* 다른 사람이 먼저 push한 상태에서는 push를 할 수 없고 그 전에 merge를 해서 push를 해야한다.

 

 

 

 

git -a -m "커밋"

그러나 untrack  파일은 track 상태로 바꿔야 한다

add와 commit을 같이한다.

 

git log를 alias로 간편하게 하기

git config --global alias.l "log --oneline --all"

 

홈 디렉토리로 이동

cd ~

ls -al .gitconfig

cat .gitconfig

깃 설정 내용을 확인할 수 있다.

 

detached head 기능을 사용하는 이유?

36c35ec (HEAD, master) work4 이 상황이다.

과감하게 커밋들을 실험하고 버리는게 가능하게 된다.

 

git add exp.txt && git commit -am "exp" 단위작업 가능

 

ec0fd7a (HEAD) exp2
b7a645a exp1
36c35ec (master) work4
122ed5d work3
8138cc2 work2
ebbdeac work2
12699de work1

 

이 상태가 되기 때문에 checkout  master로 언제든지 버리고 원상태로 바꿀 수 있다.

 

git reflog 명령어: 자신의 깃 히스토리를 확인할 수 있다.

 

브런치를 삭제하는 방법

git branch -d exp

 

git branch "git id"

해당 아이디에 브런치가 만들어진다.

 

origin/master는 원격저장소의 branch다.

 

git push --set-upstream origin master : 지역저장소의 master브랜치와 origin저장소의 master 브랜치를 연결하겠다.

push를 성공하면

"master' 브랜치가 리모트의 'master' 브랜치를 ('origin'에서) 따라가도록 설정되었습니다" 와 같이 출력된다.

 

git clone https://kdt-gitlab.elice.io/rightx2/jungwoo-2-2-2.git .

클론을 할 때 다음과 같이 뒤에 .을 붙이면 현재 디렉토리에 새로운 폴더를 만들지 않고 프로젝트가 클론된다.

.을 붙이면 폴더가 생성되고 프로젝트가 생성된다.

 

'앨리스 AI' 카테고리의 다른 글

엘리스 AI 4주차 flask 기초  (0) 2021.07.12
엘리스 AI 3주차 HTML/CSS  (0) 2021.07.05
앨리스 AI 트랙 1주차 리눅스 기초  (0) 2021.06.23

댓글