posted by 귀염둥이채원 2019. 3. 11. 11:33

# 디렉토리 삭제

$ git rm -r --cached {directory name}

* git rm --> 원격 저장소와 로컬 저장소에 있는 파일을 삭제한다.

* git rm --cached --> 원격 저장소에 있는 파일을 삭제한다. 로컬 저장소에 있는 파일은 삭제하지 않는다.


# git commit

$ git commit -m "remove {directory name} directory"


# git push

$ git push origin master

'Tool > git' 카테고리의 다른 글

Git commit --amend로 마지막 커밋 수정하기  (0) 2019.02.08
git submodule이란?  (0) 2019.02.08
git commit --amend 오류  (0) 2019.01.24
posted by 귀염둥이채원 2019. 2. 8. 18:19

마지막 커밋을 수정하는 것이 가장 자주 발생한다.

* 커밋 메시지를 수정하는 경우

* 파일 목록을 수정하는 경우


$ git commit --amend


이 명령은 자동으로 텍스트 편집기를 실행시켜서 마지막 커밋 메시지를 열어준다. 

여기에 메시지를 수정하고 편집기를 닫으면 편집기는 수정한 메시지로 마지막 커밋을 수정한다.


커밋하고 나서 새로 만들었거나 다시 수정한 파일을 마지막 커밋에 포함할 수 있다. 

기본적으로 방법은 같다. 

파일을 수정하고 git add 명령으로 Staging Area에 넣거나 git rm 명령으로 파일 삭제한다.

그리고 git commit --amend 명령으로 커밋하면 된다. 


이 명령어는 기존의 커밋을 수정하는 것이 아니고 새로운 커밋을 만들어냅니다.

만약 이미 해당 커밋이 push가 되어 있는 상황이라면 다른 사람들의 히스토리를 꼬이게 만들 수 있으므로 되도록 지양해야 합니다.

'Tool > git' 카테고리의 다른 글

파일 및 디렉토리 삭제: git rm --cached  (0) 2019.03.11
git submodule이란?  (0) 2019.02.08
git commit --amend 오류  (0) 2019.01.24
posted by 귀염둥이채원 2019. 2. 8. 17:26

프로젝트를 수행하다 보면 다른 프로젝트를 사용해야 하는 경우가 종종 있다.

보통 사용할 프로젝트들은 독립적으로 개발된 라이브러리들이다.


Git의 서브모듈은 이런 문제를 다루는 도구다. 

Git 저장소 안에 다른 Git 저장소를 디렉토리로 분리해 넣는 것이 서브모듈이다.

다른 독립된 Git 저장소를 Clone 해서 내 Git 저장소 안에 포함할 수 있으며 각 저장소의 커밋은 독립적으로 관리한다.


# submodule 추가하기

$ git submodule add https://github.com/chaconinc/DbConnector

Cloning into 'DbConnector'...

remote: Counting objects: 11, done.

remote: Compressing objects: 100% (10/10), done.

remote: Total 11 (delta 0), reused 11 (delta 0)

Unpacking objects: 100% (11/11), done.

Checking connectivity... done.


# submodule을 포함한 프로젝트 Clone

$ git clone --recurse-submodules https://github.com/chaconinc/MainProject

Cloning into 'MainProject'...

remote: Counting objects: 14, done.

remote: Compressing objects: 100% (13/13), done.

remote: Total 14 (delta 1), reused 13 (delta 0)

Unpacking objects: 100% (14/14), done.

Checking connectivity... done.

Submodule 'DbConnector' (https://github.com/chaconinc/DbConnector) registered for path 'DbConnector'

Cloning into 'DbConnector'...

remote: Counting objects: 11, done.

remote: Compressing objects: 100% (10/10), done.

remote: Total 11 (delta 0), reused 11 (delta 0)

Unpacking objects: 100% (11/11), done.

Checking connectivity... done.

Submodule path 'DbConnector': checked out 'c3f01dc8862123d317dd46284b05b6892c7b29bc'


# submodule 삭제하기

우선 서브디렉토리를 그냥 지우고 바로 서브모듈을 추가한다면 오류가 나타난다.

$ rm -Rf CryptoLibrary/

$ git submodule add https://github.com/chaconinc/CryptoLibrary

'CryptoLibrary' already exists in the index

위와 같은 오류를 해결하려면 우선 CryptoLibrary 디렉토리를 관리대상에서 삭제하고 나서 서브모듈을 추가한다.


$ git rm -r CryptoLibrary

$ git submodule add https://github.com/chaconinc/CryptoLibrary

Cloning into 'CryptoLibrary'...

remote: Counting objects: 11, done.

remote: Compressing objects: 100% (10/10), done.

remote: Total 11 (delta 0), reused 11 (delta 0)

Unpacking objects: 100% (11/11), done.

Checking connectivity... done.


# 참고 사이트

https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-%EC%84%9C%EB%B8%8C%EB%AA%A8%EB%93%88

https://blog.powerumc.kr/449

https://confluence.curvc.com/pages/viewpage.action?pageId=35586154

https://ohgyun.com/711

http://blog.naver.com/PostView.nhn?blogId=tommybee&logNo=220840604103&parentCategoryNo=&categoryNo=90&viewDate=&isShowPopularPosts=true&from=search


'Tool > git' 카테고리의 다른 글

파일 및 디렉토리 삭제: git rm --cached  (0) 2019.03.11
Git commit --amend로 마지막 커밋 수정하기  (0) 2019.02.08
git commit --amend 오류  (0) 2019.01.24
posted by 귀염둥이채원 2019. 1. 24. 15:07

feature branch에서 수정후 아래와 같이 commit --amend를 수행했더니 에러가 발생했다.

$ git commit --amend


# 에러

fatal: You are in the middle of a merge -- cannot amend.

당신은 병합 중간에 있습니다 - 수정할 수 없습니다.


# 해결

.git/MERGE_HEAD 파일을 삭제한다.


# 참고사이트

https://stackoverflow.com/questions/22135465/cant-commit-after-starting-a-merge-in-sourcetree

'Tool > git' 카테고리의 다른 글

파일 및 디렉토리 삭제: git rm --cached  (0) 2019.03.11
Git commit --amend로 마지막 커밋 수정하기  (0) 2019.02.08
git submodule이란?  (0) 2019.02.08