반응형

GIT 16

git gone 원격에서 삭제된 로컬 브랜치들을 한번에 삭제하는 방법

git gone 명령어를 만들어서 로컬 브랜치들 정리해보자 보통 이미 반영 또는 머지된 원격(remote) 브랜치들은 삭제된다. 하지만 그 브랜치들을 체크아웃(checkout)한 로컬 브랜치들은 여전히 우리 로컬에 존재한다. 이 브랜치들을 정리하지 않으면 로컬에 무수히 많은 브랜치들이 남게 되는데 이 브랜치들을 편하게 삭제할 수 있는 방법이 있다. 트래킹하는 원격 브랜치가 없는 로컬 브랜치는 지워지지 않으니 안심하고 사용해도 된다. git gone 명령어를 새로 만들 거다. git config 명령어를 통해 바로 등록해도 alias를 등록해도 되고, gitconfig 파일을 열어서 직접 입력해도 된다. 방법 1) config 명령어로 바로 등록 git config --global alias.gone "!..

개발 2022.12.10

Git 명령어에 익숙해지자 (자주쓰는 명령어)

IDE 내장 git tool을 사용하다보니 git 명령어들을 까먹고있다. bash가 속도가 훨씬 빠르니 습관을 들이자. IntelliJ Git command log는 git log에서 볼 수 있다. View > Tool Windows > Version Control 아래 git config 설정을 미리 해두면 편하다. 꼭 해두자. 1) prune prune 설정을 하면 fetch 시 마다, remote에 지워진 branch를 로컬에서도 clean 할 수 있다. > git config --global fetch.prune true 2) upstream push 할때마다 현재 브랜치 이름으로 push한다. > git config --global push.default current 자주 쓰는 명령어 1) 브..

개발 2021.02.03

유니티 git 설정

4. .gitignore 파일 설정하기 작업 할 때 visual studio 에서 쓰는 .sln 파일이나 Obj 폴더는 필요가 없다.이런 툴들에서 자동으로 생성되는 파일들이나 쓸데 없는 파일들을 커밋에서 무시할때 쓰는 파일이 .gitignore 파일이다.표준 glob 패턴을 사용하기 때문에 쉽게 설정할 수 있다.하지만 모든 파일들을 수작업으로 설정해주긴 상당히 번거롭다. 그래서 아래 사이트를 이용하면 간단하게 .gitignore 파일을 생성할 수 있다. https://www.gitignore.io/ 다만 여기서 중요한 것은 .meta 파일은 등록되있으면 안된다.저 메타 파일이 없으면 유니티에서 처리되는 파라미터나 여러가지가 없어지기 때문에꼭! .meta 파일은 commit 되어야 한다. 저 사이트에서 받..

개발 2017.10.29

Git reset 명령어

reset은 사용자의 저장소와 작업 디렉토리를 특정 시점 상태로 변경한다. 메카니즘을 들여다보면 HEAD 참조를 지정된 commit 시점으로 변경한 후, 인덱스를 변경하여 해당 commit을 반영한다. 옵션에 따라 HEAD, 인덱스 뿐만아니라 작업 디렉토리 내의 모든 파일이 변경될 수 있기때문에 반드시 주의하여 사용하여야 한다. 주요 옵션 --soft git reset --soft [commit id] --soft 옵션은 지정된 commit을 가리키도록 HEAD 참조를 변경한다. 인덱스와 작업 디렉토리의 내용은 그대로 유지된다. 이 옵션은 새 커밋을 가리키도록 심볼릭 참조의 상태만을 변경한다. --mixed git reset --mixed [commit id] --mixed 옵션은 지정된 commit을 ..

개발 2016.03.28

Git ~ 및 ^ (상대적 커밋 이름)

Git에서는 특정 참조(일반적으로 브랜치의 HEAD)를 기준으로 상대적인 위치에 있는 커밋을 식별하는 매커니즘이 있다. ~ (물결기호. 틸트) 상위 차수를 선택할 때 사용된다. ^ (삽입기호. 캐럿) 동일 차수 내에서 각기 다른 상위 커밋을 선택할 때 사용된다. show-branch 명령어를 사용하면 ~,^으로 표기된 브랜치 추적정보를 조회할 수 있다.자신의 브랜치 정보를 토대로 확인해보면 좀더 이해가 가기 쉬울것이다. 1 2 3 4 5 6 7 8 9 $ git show-branch --more=10 [master] Donggo Hate A Poop update [master^] Merge branch 'donggoHateAPoop' [master^^2] Lecture 5th [master~2] Upda..

개발 2016.03.17

Git diff 명령어

diff 명령어는 두 항목간의 차이를 비교할때 사용된다. 사용법git diff [options] [] [--] [ ...]git diff [options] --cached [] [--] [ ...]git diff [options] [--] [ ...]git diff [options] git diff [options] [--no-index] [--] 유용한 옵션--stat두 개의 트리 상태간의 차이점을 변경된 줄수, 추가된 항목 수 및 삭제된 항목 수를 간략하게 보여준다. 예git diff // 작업 디렉토리와 인덱스 비교git diff HEAD // 작업 디렉토리와 HEAD 비교git diff --cached // 인덱스와 HEAD 비교git diff --stat master // master 브랜치와의..

개발 2016.03.17

Git blame 명령어

blame 명령어는 특정 커밋을 식별할때 사용한다.소스의 각 줄을 마지막으로 수정한 사람이 누구인지 그리고 어떤 커밋에서 변경사항이 적용되었는지 알려준다.많이 사용하는 기능은 아니지만 해당 소스가 어느 시점에 누가 왜 적용했는지 추척할때 유용하게 사용할 수 있다. 사용법git blame [] [] [] [--] 예git blame HEAD ./README.md -> README.md의 마지막 수정 정보 조회1234567891011donggov@KPS MINGW64 /e/11_Project/git/DonggoGame (master)$ git blame HEAD ./README.md^16edc31 (donggov 2015-12-20 16:29:48 +0900 1) Donggo Game Project^16ed..

개발 2016.03.14

Git 객체 유형 및 구조

Git의 객체 저장소에는 blob, tree, commit, tag 객체가 존재하며 이 객체들이 Git의 상위 레벨 데이터 구조의 기초가 된다. blob 파일의 내용을 저장한다. tree . 한 레벨의 디렉토리 정보를 나타냄 . 한 디렉토리에 있는 모든 파일에 대한 blob ID, 메타데이터 등을 저장한다. . 커밋이 실행된 당시의 저장소 상태를 하나의 완전한 스냅샷으로 캡처한 내용이 담겨있다. commit . 변경 사항에 대한 메다데이터(tree, parent, author, committer 등)를 가지고 있다. . 각 커밋은 tree 객체를 가리킨다. tag . 사람이 읽기 힘든 해쉬값에 별칭을 붙인 것 다음은 Git Object Model 그림이다. git bash에서 아래 명령어를 통해 구조를 ..

개발 2016.03.14

Git 참조(ref)와 심볼릭 참조(symref)

참조 (ref) . Git 객체 저장소 내에 있는 객체를 참조하는 해시ID . 모든 Git 객체를 참조할 수 있다. . 브랜치, 태그 등도 모두 참조의 일종이다. 심볼릭 참조 (symref) . 간접적으로 Git 객체를 가리키는 이름. 심볼릭 참조도 참조의 일종이다. . Git에는 특별한 목적을 위한 아래와 같은 특수 심볼릭 참조들이 있다. 1) HEAD : 가장 최신 커밋을 참조한다. 2) ORIG_HEAD : pull, merge와 같은 특정 작업 수행전에 이전 버전의 HEAD를 ORIG_HEAD에 기록한다. 3) FETCH_HEAD : 'git fetch' 명령 수행시, 항상 마지막으로 가져온 브랜치의 헤드를 FETCH_HEAD에 저장한다. 단, 작업 직후에만 유효함. 4) MERGE_HEAD : ..

개발 2016.03.14

git cherry-pick : 특정 commit만 반영하기

cherry-pick동사[타,자동사][VN, V] (최고를) 선별하다 cherry-pick은 다른 브랜치에 있는 특정 commit만 반영할때 사용한다.머지 커밋과 같이 parent가 있는 커밋을 cherry-pick 하면 fail이 나는데 이때는 -m 옵션을 사용하면 된다. 사용법git cherry-pick [commit id] // commit id을 반영하고 커밋까지 수행git cherry-pick -n [commit id] // commit id을 반영하고 add까지만 수행. commit은 안함 예) 3개의 커밋을 하나의 커밋으로 합쳐서 반영하는 예제git cherry-pick -n aaa123git cherry-pick -n bbb123git cherry-pick -n ccc123git commi..

개발 2016.02.17

git ignore 설정

git ignore 설정이다. 빠져서는 안되는 설정 git 관리 대상에서 제외하고 싶은 파일이 있다면 .gitignore 파일에 추가하여 예외처리를 할수 있다. 만약 해당 파일이 없다면 만들어주면 된다. 패턴 . 아무것도 없는 라인이나, #로 시작하는 라인은 무시한다. . 표준 Glob 패턴을 사용한다. . 슬래시(/)로 시작하면 하위 디렉토리에 적용되지(Recursivity) 않는다. . 디렉토리는 슬래시(/)를 끝에 사용하는 것으로 표현한다. . 느낌표(!)로 시작하는 패턴의 파일은 무시하지 않는다 예 # 확장자가 .a인 파일 무시 *.a # 윗 라인에서 확장자가 .a인 파일은 무시하게 했지만 lib.a는 무시하지 않음 !lib.a # 현재 디렉토리에 있는 TODO파일은 무시하고 subdir/TODO..

개발 2016.02.13

git revert, reset을 통한 소스 복구 방법

git revert, reset을 통한 소스 복구 방법입니다. 복구하려는 2~3개 커밋 전이라면 revert를, 그보다 훨씬 전이라면 reset을 통해 복구하면됩니다. revert를 통한 복구 복구 시점 이후에 커밋이 많지않거나 merge 커밋이 없는 경우에 사용. 실제로 사고 발생시 merge 커밋이 없는 경우가 거의 없기 때문에 잘 사용하진 않음. 1) git revert -n [커밋id] 2) git commit -m "커밋 메시지" 3) git push [target] 예) git revert -n a123 git revert -n b456 git revert -n c789 git commit -m "Revert roll back" git push origin [branch] reset을 통한 복..

개발 2016.02.11

git log 유용한 옵션

git log 유용한 옵션입니다. -(n) 로그 조회수 설정 예) git log -2 // 최근 2개 로그 조회 -p 각 커밋의 diff 결과 조회 예) git log -p -2 --stat 각 커밋의 통계정보 조회. 수정된 파일, 수정 라인수 등 조회 예) git log --stat --pretty=oneline 각 커밋을 한 라인으로 보여준다. 이 옵션은 많은 커밋을 한 번에 조회할 때 유용 예) git log --pretty=oneline --oneline 위 --pretty=oneline에서 커밋키를 줄여서 보여줌 예) git log --oneline --graph 브랜치와 머지 히스토리 정보까지 아스키 그래프로 보여 준다. 예) git log --pretty=oneline --graph --au..

개발 2016.02.11

Git push default - simple & matching

push default - simple & matching git에서 타겟 브랜치를 선언하지 않고 push를 사용하면 아래와 같은 경고가 뜨는 현상이 발생할 때가 있다. 123456789101112131415161718192021$ git pushwarning: push.default is unset; its implicit value has changed inGit 2.0 from 'matching' to 'simple'. To squelch this messageand maintain the traditional behavior, use: git config --global push.default matching To squelch this message and adopt the new behavio..

개발 2016.01.06
반응형