git 사용법

시유야·2023년 3월 3일
0
post-thumbnail

01 git이란?

git을 사용하는 이유

효율적인 협업 가능
쉬운 버전 관리

git의 특징

가지치기와 병합
가볍고 빠름
분산작업
데이터 보장
staging area
오픈소스

git설치와 초기 설정

$ git config --global user.name "이름입력"
$ git config --global user.email 이메일입력

--global 옵션을 넣는 이유 : 모든 프로젝트마다 동일한 사용자가 사용
따라서 프젝마다 다른 사용자 정보를 지정하고 싶다면 --global은 넣지 않아도 된다.

  • 설정 정보 확인
$ git config --list

git 저장소 생성

$ git init : 기존의 디렉토리를 git repository 로 설정
=> 깃을 사용할 프로젝트 폴더로 이동 후 git init을 실행한다.
$ ls -al : .git 디렉토리가 생성된 것 확인할 수 있다.

02 git을 사용한 버전 관리

git 파일 생성



<사진출처: 엘리스트랙 "감사합니다">

git 저장소

  • 새로운 파일을 생성하면 staging area로 보내기 위해 $ git add new.html
  • 현재 폴더의 모든 파일을 업로드 하고 싶을 때는 $git add . %띄어쓰기 주의%
  • .git 저장소 내에 staging 파일을 저장 $ git commit
    이러면 repository에 올라감 이때 주의할 사항은 반드시 커밋메세지를 함께 남겨야 한다.
    $ git commit -m "남길메시지 내용 띄어쓰기 반영됨"
    띄어쓰기 없이 남기려고 하려면 따옴표는 안해도 가능하다.
  • 앞에서 남긴 메세지에 오타가 있거나 누락된 파일이 있을 경우 수정이 가능하다.
    $ git commit --amend
    텍스트 편집기가 실행되고, 수정하고 싶은 부분을 수정 후 저장하면 그대로 반영된다.

git 관리 상태 확인

  • git status => staging file 들의 상태를 확인한다.
  • git log => .git repository에 존재하는 history를 확인할 수 있다.

  • Untracked files: git add로 staging area에 올라가지 않은 파일들 -> git add <파일명>해서 staging area로 보내야 한다.
    $ git status로 확인하면 changes to be commited: ~ 로 파일이 올라와있다.
  • $ git reset <file_name> => add 명령을 취소할 수 있다. 그러면 다시 working directory 로 파일이 넘어간 걸 확인할 수 있다.
  • modified: commit 된 파일 중 수정된 파일이 있을 경우
  • $ git diff : commit된 파일 중 변경된 사항을 비교할 수 있다.

대표적인 log옵션들

$ git log -p -2
-p, --patch: 각 commit의 수정 결과를 보여주는 git diff와 같은 역할
-2: 상위 2개의 commit만 보여준다. 즉, 숫자는 아무거나 쓰면 된다.

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

$ git log --pretty=oneline
--pretty=oneline: 각 commit을 한 줄로 출력

$ git log --graph
--graph: commit간의 연결된 관계를 아스키 그래프로 출력한다.

$ git log -S function_name
-S: 코드에서 추가되거나 제거된 내용 중 특정 텍스트(예로 function_name)가 포함되어 있는지 검사

git branch형성

git branch

각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에 독립적인 작업이 가능하다.
main branch는 배포할 수 있는 수준의 안정적인 브랜치이기 때문에 신중하게 병합을 한다.
topic branch에서 단위 작업을 한 후에 병합을 한다. 다 작업을 한 후에는 삭제할 수 있다.

$ git branch : 현재 생성되어 있는 브랜치 보기. ( * 가 붙어 있는게 현재 위치이다.)
$ git branch new_branch : new_branch라는 새로운 브랜치 생성
$ git checkout another_branch : another_branch라는 다른 브랜치로의 전환

fast_Forward

두 브랜치를 통합하려고 할 때 변경된 부분이 겹치지 않아서 충돌 없이 곧바로 merge가 되는 경우를 fast-forward라고 부른다.
$ git branch --merged : merge된 branch를 볼 수 있다.
$ git branch -d new_branch : 사용을 마친 new_branch를 삭제한다.

merge

기준이 되는 브랜치로 이동을 한 후 병합을 시키려고 하는 브랜치와 병합을 할 수 있다.
main, one 두개의 브랜치가 있다고 가정하고, one브랜치를 main에 merge하려고 한다면
$ git checkout main 으로 main 브랜치로 이동(이동을 필요로 할 경우)
$ git merge one : one 브랜치가 main으로 병합되었다.

conflict 해결

merge를 실행한 두 branch에서 같은 파일을 변경했을 때 충돌이 발생한다.
$ git status명령어로 어느 파일에서 충돌이 발생했는지 확인한다.
메세지에 "both modified: 파일이름 "으로 표시되는 파일에서 충돌이 발생했으므로
충돌관리를 한 후 병합하도록 한다.
충돌이 일어난 파일을 열어본 후
<출처: 엘리스트랙 "감사합니다 '-')">
수정을 완료하면 '<<<<<<<','======','>>>>>>>'가 포함 된 행도 삭제를 해준 다음
$ git add file.html -> $ git commit -m "수정했어요"
를 다시 해주고, $ git merge main merge 를 해야한다.
작업 전에 반드시 pull을 먼저 해서 파일을 확인한 다음 작업을 하는 습관을 기르는게 좋다.

git 원격저장소 - 버전관리

원격 저장소 받아오기

원격 저장소는 로컬 저장소(내 컴퓨터)가 아닌 인터넷이나 네트워크 어딘가에 있는 저장소이다.
$ git clone https://github.com/어쩌구저쩌구주소 : 깃허브에 존재하는 원격저장소의 주소를 넣어주면 내 컴퓨터에 복제가 된다.
$ git remote add origin https://github.com/... : 원격 저장소를 연결하는 명령어
원격 저장소의 단축이름을 origin으로 지정한다는 의미이다.
저장소의 주소 구성 -> 예) https://github.com/group/project_name
'웹호스트 서비스/그룹명/프로젝트명 '이다.
$ git remote : 연결된 원격저장소 확인
$ git remote show origin : 연결된 원격저장소 확인
$ git remote rename origin git_test : 원격저장소의 이름을 origin 에서 git_test로 변경
$ git remote rm git_test : 주소가 변경되었거나, 필요가 없어진 저장소 삭제

원격 저장소 동기화

$ git pull : 원격저장소에서 데이터 가져오기 + 병합까지 한번에
$ git fetch : 원격저장소에서 데이터만 가져오기 병합은 셀프로!
다른 사람이 먼저 작업을 하고 push를 한 상태라면 내 작업물을 push하기 전에 pull해서 먼저 병합처리를 한 후 push해야한다.

origin 이란?

기본적으로 만들어진 원격저장소의 이름은 origin이 default값이다.
$ git remote -v : 저장한 저장소의 이름과 주소를 볼 수 있는 명령어

profile
i'm happy enough.

0개의 댓글