1. 수정된 파일의 차이점 보기

git diff filename

2. 수정된 파일 히스토리 보기

git log --follow -p -- filename

3. 누가 어느 부분을 수정했는지 보기

git blame filename

4. 커밋 내용만 보기

git log --follow filename

git을 사용해서 원격 저장소를 clone 해오면, master 브랜치만 가져와지고 다른 브랜치들은 로컬로 가져와지지 않는다.

다른 브랜치들은 따로 가져와야 한다.

 

원격 저장소 정보 업데이트

git remote를 갱신해서 원격 브랜치들의 정보를 최신으로 업데이트 한다.

(업데이트 안하면, 새로 추가된 원격 브랜치들이 조회가 안된다.)

$ git remote update

 

원격 저장소 branch 확인

1. 원격 저장소의 branch 리스트 보기

$ git branch -r

 

2. 원격, 로컬 모든 저장소의 branch 리스트 보기

$ git branch -a

 

원격 저장소의 branch 가져오기

1. 로컬에 원격 저장소와 동일한 이름의 branch를 생성하며 해당 브랜치로 checkout하기

$ git checkout -t [원격 저장소의 브랜치 이름]

 

원격 저장소의 test라는 브랜치를 가져오고 싶은 경우, 아래처럼 하면 된다.

$ git checkout -t origin/test

 

2. branch 이름을 변경하며 가져오고 싶은 경우

$ git checkout -b [생성할 브랜치 이름] [원격 저장소의 브랜치 이름]

 

test라는 브랜치를 new_test라는 이름으로 가져오고 싶은 경우, 아래처럼 하면 된다.

$ git checkout -b new_test origin/test

 

Git은 브랜치별로 소스를 관리하기 편하다.

개발하려는 기능을 새로운 브랜치를 만들어 작업한 후, 작업이 완료되면 master로 통합해주는 방식으로 많이 활용된다.

 

아래는 쉘에서 사용 가능한 브랜치 관련 git 명령어들이다.

 

1. 브랜치 생성

git branch 명령으로, test라는 브랜치를 만든다

$ git branch test

 

2. 브랜치 이동

git checkout 명령으로 test라는 브랜치로 이동한다.

$ git checkout test

 

3. 브랜치 이름 변경

로컬 저장소의 브랜치 이름 변경

$ git branch -m [old_branch] [new_branch]

 

test라는 브랜치의 이름을, new_test로 변경하는 예는 다음과 같다.

(브랜치 명령어는 브랜치만 생성하기 때문에, 작업을 하려면 checkout을 해야 한다.)

$ git branch -m test new_test
$ git checkout new_test

 

원격 저장소의 브랜치 이름 변경

원격 저장소의 old_branch를 삭제하고, new_branch를 push 해주면 된다. 아래의 명령어로 한번에 할 수 있다.

$ git push origin :[old_branch] [new_branch]

 

원격 저장소의 test라는 브랜치를 new_test라는 브랜치명으로 바꾸는 예는 다음과 같다.

$ git push origin :test new_test

 

4. 브랜치 합치기

두 브랜치를 합치는 방법으로는, Merge와 Rebase가 있다.

양자는 최종 결과물은 같고, 커밋 히스토리만 다르다.

Rebase 는 브랜치의 변경사항을 순서대로 다른 브랜치에 적용하면서 합치고,

Merge는 두 브랜치의 최종 결과만을 가지고 합친다.

 

브랜치 Merge

git merge 명령으로, test 브랜치를 master 브랜치에 합친다.

$ git checkout master
$ git merge test

 

브랜치 Rebase

rebase를 통해 test 브랜치를 master에 합치는 예는 다음과 같다.

$ git checkout test
$ git rebase master
$ git checkout master
$ git merge test

Rebase시 주의! 

이미 공개 저장소에 Push한 커밋을 Rebase 해서 다시 push 하지 마라.

Rebase는 기존의 커밋을 그대로 사용하는 것이 아니라 내용은 같지만 다른 커밋을 새로 만든다.

따라서 이미 공개 저장소에 c1이라는 커밋을 push 해서 다른 사람이 그 커밋을 바탕으로 작업을 했는데, 해당 커밋 c1을 rebase로 다시 push 해버리면, 동료는 rebase 내용을 pull 했을 때 본인의 코드와 충돌이 일어나게 된다.

그래서인지, rebase는 로컬작업에서만 사용하라고 권장하는 사람들도 있다.

 

합친 브랜치 master를 원격 저장소에 push하기

$ git push origin master

 

5. 브랜치 삭제

merge 후 필요 없어진 브랜치는 삭제한다.

$ git branch -d [branch_name]

 

아래는 test라는 브랜치를 삭제하는 예이다.

$ git branch -d test

1. clone

원격 저장소를 내 컴퓨터에 복제한다. (폴더명을 입력해주면, 폴더가 생성되며 그 안으로 원격 저장소가 복제된다.)

git clone [클론할 git repository 주소] [폴더명]

 

2. checkout

특정 브랜치를 가져온다.

git checkout [브랜치명]

 

3. username과 email 설정

커밋을 하려면 내가 누구인지를 설정해 주어야 한다. (그래야 누가 커밋했는지 알 수 있음)

--global : 모든 프로젝트에 이 계정을 적용

git config --global user.name "Your Name"
git config --global user.email you@example.com

 

4. add

생성한 파일을 git 인덱스에 추가한다. (커밋을 위한 준비)

git add "생성한 파일명"

 

5. commit

인덱스에 추가된 파일을 로컬 저장소에 커밋한다.

git commit -m "커밋 메시지"

 

6. push.default 설정

push의 기본동작을 matching과 simple 중에 선택할 수 있다.

1) matching : 전체 브랜치 push

git config --global push.default matching

 

2) simple : 현재 브랜치만 push

git config --global push.default simple

 

7. push

로컬 커밋 내용을 원격 저장소에 반영한다.

1) master 브랜치에 push하는 경우

git push origin master

2) 이미 브랜치가 설정되어 있다면, git push만 해도 된다.

git push

 

1. 터미널에 git 설치 명령어 입력

# yum install git

 

2. 중간에, disk size 보여주고, 계속 할지 물어보면 y 입력

=============================================================================================================================================================================================
 Package                                            Arch                                     Version                                            Repository                              Size
=============================================================================================================================================================================================
Installing:
 git                                                x86_64                                   1.8.3.1-23.el7_8                                   base                                   4.4 M
Installing for dependencies:
 perl-Error                                         noarch                                   1:0.17020-2.el7                                    base                                    32 k
 perl-Git                                           noarch                                   1.8.3.1-23.el7_8                                   base                                    56 k
 perl-TermReadKey                                   x86_64                                   2.30-20.el7                                        base                                    31 k
 rsync                                              x86_64                                   3.1.2-10.el7                                       base                                   404 k

Transaction Summary
=============================================================================================================================================================================================
Install  1 Package (+4 Dependent packages)

Total download size: 4.9 M
Installed size: 23 M
Is this ok [y/d/N]: y

3. 완료됨. 간단하다. (아래는 완료 화면)

Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : 1:perl-Error-0.17020-2.el7.noarch                                                                                                                                         1/5
  Installing : rsync-3.1.2-10.el7.x86_64                                                                                                                                                 2/5
  Installing : perl-TermReadKey-2.30-20.el7.x86_64                                                                                                                                       3/5
  Installing : perl-Git-1.8.3.1-23.el7_8.noarch                                                                                                                                          4/5
  Installing : git-1.8.3.1-23.el7_8.x86_64                                                                                                                                               5/5
  Verifying  : git-1.8.3.1-23.el7_8.x86_64                                                                                                                                               1/5
  Verifying  : 1:perl-Error-0.17020-2.el7.noarch                                                                                                                                         2/5
  Verifying  : perl-TermReadKey-2.30-20.el7.x86_64                                                                                                                                       3/5
  Verifying  : perl-Git-1.8.3.1-23.el7_8.noarch                                                                                                                                          4/5
  Verifying  : rsync-3.1.2-10.el7.x86_64                                                                                                                                                 5/5

Installed:
  git.x86_64 0:1.8.3.1-23.el7_8

Dependency Installed:
  perl-Error.noarch 1:0.17020-2.el7              perl-Git.noarch 0:1.8.3.1-23.el7_8              perl-TermReadKey.x86_64 0:2.30-20.el7              rsync.x86_64 0:3.1.2-10.el7

Complete!

+ Recent posts