본문 바로가기

Study/Git & Github

(10)
etc git blame 파일명 | 파일에 작성된 내용의 커밋 정보(누가, 언제 작성했는지)를 터미널에서 line by line으로 알 수 있다. vscode에서 코드를 리뷰하다가, 누가 언제 이런 코드를 작성했는지 궁금할 때에는 "git lens" 라는 익스텐션을 이용할 수 있다. git bisect | 이전에는 잘 동작하던 코드가, 최근에 잘 동작하지 않을 때 커밋과 커밋 사이에서 어떤 커밋에 문제가 발생했는지 찾을 수 있다. 이진탐색 알고리즘 드림코딩 8.3 문제의 원인을 빠르게 찾는 법 tig
git의 원리 git init 명령어를 입력하면 만들어지는 " .git " 이라는 숨겨진 폴더에 파일들이 어떤 일을 하는지 살펴봄으로써, 깃의 원리에 대해 알아본다. index와 objects/ add의 원리 깃 프로젝트 폴더에서 "hello" 라는 내용이 적혀있는 "greet.txt"라는 파일을 새로 만들었다고 가정해보자. 그런 다음 git add greet.txt 명령어를 입력하면, greet 파일은 staging area에서 commit을 대기하고 있는 상태가 된다. 이 때 .git 폴더에서는 무슨 일이 일어날까? 폴더에는 index라는 새로운 파일이 추가된다. 이 파일에는 우리가 add한 파일의 이름과 복잡하고 긴 문자열이 기록된다. 이 복잡하고 긴 문자열은 objects폴더 안에 새로 생기는 파일의 이름인데,..
Remote clone vs. pull Remote repository remote | Local => Remote local repository에서 commit한 내용들을 서버에 업로드 하기 위해서, 먼저 github에 repo를 만들어야 한다. git remote add origin 주소 | 현재 local에 기록되어 있는 내용을 remote 저장소에 연결(add)한다. 저장소의 주소는 "origin" 이라는 이름(변수)에 할당된다. 여러 개의 원격 저장소 주소를 연결할 수도 있다. 로컬과 동기화하는 원격 저장소의 이름은 주로 "origin"으로 설정한다. 이제 로컬에서 history를 확인할 때, origin/master를 볼 수 있는데, 이것은 서버(origin)에 등록되어 있는 master 브랜치라는 뜻이다..
Undo before start log(history)를 수정하는 것은 기존의 커밋을 새로운 커밋으로 바꾸는 것이기 때문에, 이미 서버에 업로드 된 history라면, 즉 다른 개발자와 함께 공유하고 있는 경우라면, log를 수정하지 않는 것이 좋다. working dir & staging area 초기화 git restore . | working dir에 있는 모든(.) 변화 상태를 초기화 +) 이전에는 git checkout 커밋을 이용해서, 그 커밋으로 되돌아 가는 방법을 사용했다 git restore 파일명 | 파일의 변화 상태를 초기화 git restore --staged . | staging area에 있는 모든(.) 변화 상태를 다시 working dir로 가져온다 git restore --stage..
Stash what is keep-index option track vs. untracked files What is stash? 이런 상황을 생각해 보자. A는 열심히 working directory에서 코드를 수정하고 있다. 그런데 B가 다른 브랜치에서 생긴 bug를 확인해 달라고 요청한다. ✨이 때 A가 지금까지 수정한 내용을 commit하지 않고 다른 branch로 checkout하면 예기치 못한 문제가 생긴다.✨ 예를 들어 feature라는 브랜치에서 수정한 파일을 commit하지 않은 상태로 master로 이동하면, feature에서 작업중인 내용이 master의 status에 영향을 끼치게 된다. 물론 commit을 한 뒤에 다른 branch로 이동할 수도 있지만, A는 아직 수정 중인 사항을 comm..
Branch & Merge What is branch & merge? over view 깃 프로젝트를 생성하면 기본적으로 "master"라는 branch가 생성된다. 새롭게 만들어지는 commit은 각각 이전 commit을 가리키고 있다(pointer). 서로를 가리키면서 이어진 commit들을 "branch"라고 하고, branch와 branch를 하나의 branch로 병합하는 것을 "merge" 라고 한다. +) HEAD 모든 commit을 보여주는 git log를 이용하면 head -> 라는 것이 표시됨 "HEAD" => current branch current branch => 가장 최근에 한 커밋, 또는 가장 최근에 working directory로 불러온 커밋 Branch git branch | local repo에 저..
Basic init 프로젝트 폴더, 즉 앞으로 프로젝트에 사용될 파일을 모아 둔 폴더를 깃 프로젝트로 만들어야 한다. 그래야 폴더 내부 파일의 변경 사항들을 깃이 추적 할 수 있다. git init | 현재 폴더를 깃 프로젝트로 만든다(.git이라는 repository(저장소)를 생성한다). git clone [깃헙 프로젝트 url] [프로젝트를 복사할 폴더 이름] | 깃헙 repository(내 repo 뿐만 아니라, 다른 사람들이 공개한 repo도 가능)를 내 컴퓨터의 폴더로 복사해 올 수 있다. Status git status | 현재 branch의 내부 상태 확인 trancked/ untracked files... | 깃이 변경 사항을 추적하고 있는 파일(tracked files), 아닌 파일(untrack..
over view git & github fundamentals Init & Remove 우리가 만들 프로젝트를 깃 프로젝트로 하려면, 즉 프로젝트의 변화 사항을 추적할 수 있도록 하려면, 먼저 깃 초기화 단계(git initialization)가 필요하다. 터미널에서 프로젝트가 포함될 directory에 "git init" 명령어를 입력하면, master branch와 ".git" 이라는 다양한 파일이 포함된 숨겨진 폴더가 생성된다. ".git"은 우리가 작업하는 코드의 버전 정보가 저장되는 곳이다. 만약 git project로 만들고 싶지 않으면, "rm -rf .git" 명령어를 이용할 수 있다. Over view | Work flow working directory | 프로젝트를 수정/작업하는 곳 staging a..