git (GIT) Stash 2019. 12. 26. 00:27 언제 사용하는가? branch의 작업이 끝나지 않았을 때 다른 branch로 checkout 해서 다른일을 해야하는 경우 이때 작업이 끝나지 않은 내용을 commit 하기 애매한 경우 stash를 사용하면 내가 작업한 내용을 어딘가에 숨겨놓을 수 있다. git checkout -b "브랜치 명" : branch를 생성하고 checkout을 동시에 하는 명령어 상황 exp branch에서 f1.txt를 수정 후 add 하지 않은 상황에서 급하게 master branch로 checkout 해야하는 경우 현재 branch master 그럼 어떻게 할 것 인가? - Stash git stash 현재 상태 아무것도 작업한 내역이 없어진다. 내가 수정했던 내용 또한 볼 수 없다. 감춰놓았던 내역을 복구 git s.. (GIT) Branch 충돌해결 2019. 12. 25. 23:53 git branch -d exp : 브랜치 삭제 git branch -D exp : 브랜치 강제 삭제 현재 상태 branch master master.txt 파일 생성 후 커밋 exp master exp.txt 파일 생성 후 커밋 merge 실행 git merge exp 아주 이상적인 상황이지만 그러지 않는 상황이 있을 수가 있다. - 같은 파일을 수정하고 그 파일을 merge 해야 하는 상황을 예로 들 수 있다. 현재 상태 exp branch에 common.txt 파일을 생성 후 커밋 master branch로 돌아와서 exp branch와 merge 하여 master branch에도 똑같은 common.txt 파일 생성 master branch의 common.txt 파일 수정 exp branch의 c.. (GIT) Branch 병합 2019. 12. 25. 23:02 현재의 상태 작업 내용 : exp의 내용을 master로 옮기는 작업을 진행할 것이다. 1. master로 checkout 2. merge 사용 현재 branch : master git merge exp 결과 두 개의 부모를 갖는 하나의 커밋이 생성 마스터는 현재 자기가 작업한 2번과 exp의 3, 4번을 모두 가지게 되었다. (GIT) Branch 정보확인 2019. 12. 25. 22:52 로그 확인 git log --branches --decorate git log --branches --decorate --graph master에 f3.txt 파일 추가 후 커밋 git log --branches --decorate --graph 이제 graph를 실행하면 효용성을 한눈에 볼 수 있다. 전체적으로 간결하게 현재 브랜치 상태를 보고 싶을 때 git log --branches --decorate --graph --oneline 브랜치 사이의 차이점을 보고 싶을 때 git log master..exp (GIT) Branch 만들기 2019. 12. 25. 22:38 현재 상태 branch의 활용 우리가 작업하고 있는 소스코드는 그대로 둔 채로 고객사가 요구하는 커스터마이징 하는 기능을 추가해야 될 때 거의 사용된다. 누군가 어떤 기능을 요구할 때 내가 판단했을 때 이 기능은 나중에 필요 없다고 생각했을 때 분기를 태워서 작업하는 경우 git branch 현재 내가 master branch를 사용하고 있다.(* master) 브랜치 생성 git branch exp 브랜치 이동 git checkout exp 이때, master branch와 exp branch는 같은 상태이다. 현재상태 branch : exp f1.txt 파일을 수정 후 커밋 현재 exp의 로그 현재 master의 로그 (GIT) reset과 checkout의 원리 2019. 12. 25. 21:44 현재 상태 : 한 개의 파일에 4번의 커밋 이력 네 번째 이력을 삭제 git reset --hard 5641a79735933341590d08078147ac91cbc6ad85 : 현재 checkout 한 master가 어떤 commit을 최신 commit으로 가리키는 파일 순서 1. ./HEAD 을 본다. 2. refs/master를 본다. 3. 리셋을 한다는 것은 현재 보고 있는 branch의 최신 커밋을 바꾸는 행위 리셋을 취소하고 싶을 때 옆의 두 개의 파일에 reset 하였던 메시지가 저장되어 있다. cc286f245a38abe97c6f84038d1d7f57208595bb 5641a79735933341590d08078147ac91cbc6ad85 choijunwoo 1577275809 +0900 re.. (GIT) GIT 내부 파헤치지 - COMMIT (with gistory) 2019. 12. 25. 20:09 현재의 상태 gitTest.java 파일 커밋 수행 커밋을 하면 버전처럼 해당 내용이 objects에 들어간다. tree b354b0b368c25b65725c0ae3098a51f85fe3e7b0 또 다른 파일을 커밋했을 시 parent가 생성되어 이전 커밋 내용을 볼 수 있다. 정리 이전 커밋의 정보를 담고 있다. (parent) 커밋이 일어난 시점에 작업 디렉터리의 이름과 그 파일의 이름이 담고 있는 정보가 tree에 담고 있다. 각각의 버전마다 다른 tree를 각각 다른 값을 담고 있다. (SNAP-SHOT) 각각의 버전의 그 버전이 만들어질 당시의 SNAP-SHOT을 tree라는 정보구조를 통해 담고있다. (GIT) GIT 내부 파헤치지 - ADD (with gistory) 2019. 12. 25. 18:59 index : 파일의 이름 저장 objects: 파일의 내용 저장 똑같은 java 파일을 복사하고 add 하였을 때 cp src/main/java/org/example/gitTest2.java src/main/java/org/example/gitTest3.java git add . 복사한 대상과 복사한 파일은 같은 오브젝트를 가리킨다. 즉, 깃은 파일을 저장할 때 파일의 이름이 달라도 파일의 내용이 같으면 같은 object파일을 가리킨다. 깃은 왜 내용이 같으면 왜 같은 파일로 취급하는 것일까? http://www.sha1-online.com/ SHA1 online sha-1 md5 md2 md4 sha256 sha384 sha512 ripemd128 ripemd160 ripemd256 ripemd320.. 이전 1 다음