Searching with git - Git 에서 검색하는 법
hyperskill - Searching with git 영어 원문
당신이 거대한 프로젝트의 메인 프로그래머라고 상상 해 보세요.
그리고 당신은 끊임없이 동료들의 작업물의 결과를 지켜보고 있습니다.
그들이 작업하는 branch, commit, merge 그리고 실수들,
그 실수를 캔슬하고.. 캔슬 때문에 conflict가 일어나고.. 등등이 있습니다.
이러한 행동들을 쉽게 따라서 볼 수 있는 방법이 없을까요?
다시 한 번 말하지만, Git은 도와 줄 겁니다!
다른 것들 사이에서, Git은 commit 검색 옵션을 가지고 있습니다.
이제 한번 이것이 정확히 무엇이고, 이를 통해서 commit을 어떻게 찾을 수 있는지 살펴 봅시다.
Git blame - Git blame (레포지토리 파일 책임자)
누가 프로젝트 파일 copy.py
의 실수에 대한 책임을 가지고 있을까요?
이는 git blame
명령어를 통해서 쉽게 찾아 낼 수 있습니다.
이는 코드에 있어 저자의 정보와 파일 내부의 특정 줄을 변경한 커밋에 대한 정보를 반환합니다.
당신은 간단하게 위의 명령어를 타이핑 한 후, 변경 된 파일의 이름을 작성하면 됩니다.
$ git blame code.py
^36a1d7 (John User 2020-11-17 12:10:07 -0500 1)
좋습니다! 우리는 불완전한 커밋을 찾아냈어요.
이건 John이 저지른 것 같네요.
이제 당신은 그에게 가서 코드 내부에 버그가 있었는지 물어 볼 수 있습니다.
Git log - Git 로그
위에서 말했듯이 John과 이야기를 해 본 후,
당신은 가장 최신의 변경사항을 좀 더 가까이 보기로 결정했습니다.
이를 수행하기 위해서,
친숙한 git log
명령어가 필요한데,
이는 git blame
명령어가 그저 마지막 커밋과, 커밋되지 않은 변경사항(staging area) 을 보여주기 때문입니다.
git log
명령어의 도움이 있다면, 당신은 프로젝트에 있어 해당 파일이 변경이 된 커밋들을 발견 할 수 있습니다.
해당 파일이 커밋 된 메세지를 보기 위해서,
git show --name-only <hash from git blame>
명령어가 필요합니다.
또한 당신은 이러한 커밋에서 변경이 되었던 다른 파일들에 대한 정보도 얻을 수 있습니다.
여기 이에 대한 더 자세한 예제가 있습니다 :
$ git show --name-only ^36a1d7
또한 우리는 조심스럽게 이 파일이 수정되었던 커밋들을 조사하거나, 검사 할 수 있습니다.
여기 이러한 역할을 위한 두 개의 log 명령어가 더 있습니다.
주어진 파일 에서 일어난 변경사항에 대한 모든 커밋들의 정보를 얻기 위해서,
당신이 사용해야 하는 것은 :
$ git log code.py
그리고 밑의 명령어의 도움에 따르면,
우리는 마지막 커밋에서 일어난 변경사항에 대한 정보를 얻을 수 있습니다 :
$ git log -n1 code.py
git log
명령어는 옵션의 결합에 대해 흥미로운 플래그와 옵션들을 많이 가지고 있습니다.
이러한 모든 결합을 보고 싶으면, --help
플래그를 사용하거나, Git log documentation를 볼 수 있습니다.
개인적으로 위의 Git log documentation이 엄청난 도움이 될 것 같습니다.
Git find word and description - Git 로그에서 단어 찾기
위의 상황 예시를 이어서,
당신은 프로젝트의 철저한 점검 과정에서,
당신은 "updated" 키워드가 있는 파일에 매우 흥미로운 것들이 있다는 것이 밝혀졌습니다.
이 흥미로운 것들은 코드 내부의 John의 마지막 변경사항들이었습니다.
그리고 거기엔 결과적으로 꽤 많은 양의 변경사항들이 있었습니다.
John이 업데이트 한 기능이 있는 모든 파일들을 찾기 위해서,
이 명령어를 사용합니다 :
git log -G updated
당신이 커밋의 description (설명란)에 포함하고 있는 단어를 찾고 싶은 경우,
이 명령어를 통해 수행 할 수 있습니다 :
git log --all --grep='README'
Conclusion - 결론
이제 당신은 변경 사항을 추적하는 법을 알며,
동료와 작업하는 것을 잘 컨트롤 하게 되었습니다.
만약 당신이 프로젝트에서 가장 중요하고 똑똑한 사람이 되고 싶다면!
이러한 명령어들을 사용하는 것을 잊지 마세요.
words to remember
provoke : 야기하다, 화나게 하다
blame : 책임을 지다, 비난하다
faulty : 불완전한, 결점이 있는
concrete : 결합체, 구체적인, 굳어진, 현실의
examine : 조사하다, 검사핟, 심사하다, 시험하다
vigilant : 철저한
It turned out : 밝혀졌다. ====> As it turned out : 결과적으로
consolidate : 통합하다, 합병 정리하다, 합동하다