git
다른 사람들과 협업할 때 많이 사용합니다 . 공유 저장소에서 함께 작업할 때 HEAD
마지막 커밋과 현재 마스터 브랜치(또는 현재) 사이에 다른 사람들이 변경한 내용을 확인할 수 있기를 원합니다 .
지금까지 저는 다음 작업 흐름을 사용하고 있습니다.
git fetch # download everything
git merge # since I'm a trusting person ;)
git logadog # my git-alias for `git log --all --decorate --oneline --graph`
# manually look into how many commits were performed since my last commit
git diff HEAD~3 # if 3 commits were performed since then
git diff c0ffee
또는 (마지막 커밋이 )을 사용할 수도 있습니다 c0ffee
.
이것이 작동하는 동안 나는 더 간단한 것을 선호 git diff COMPARE_HEAD_WITH_THE_LAST_COMMIT_FROM_MY_USER
하지만 어떻게 작동하는지 잘 모르겠습니다.
저도 좋은 vim
플러그인을 사용하고 있어요fugitive
작성: Tim Pope :Gdiffsplit HEAD~THE_STUFF_FROM_ABOVE
- 구문을 사용하여 이 작업을 수행할 수 있다면 좋을 것입니다.
답변1
이것은 문제를 해결하는 "git과 같은" 방법이 아닙니다. 일반적으로 마지막 커밋을 가리키는 분기를 유지합니다.
하지만 이 질문에 대답하려면 다음 도우미 기능을 사용해 보세요. 이는 매우 효율적이지 않으며 일부 낮은 수준의 명령을 사용해야 할 수도 있습니다.
my_last_commit(){
local ME="$(git config user.name)"
git log --format='%h%n' --author="$ME" -1
}
그런 다음 이를 수행할 수 있습니다 git diff $(my_last_commit)..HEAD
(기본값이므로 원하는 경우 HEAD를 생략할 수 있음).git logadog $(my_last_commit)^..
답변2
너무 쉽게 믿는 사람이 되지 마세요. ;-)
정말 죄송해요. 좀 더 진지하게 말하자면, 합병 직전은 귀하의 업무와 동료의 업무 사이에 어떤 변화가 있었는지 확인할 수 있는 완벽한 시간입니다. 병합하기 전에 실행하면 병합 시 변경되는 사항이 표시됩니다.
git fetch
git diff ...@{upstream}
실제로 내 작업 흐름에는 "whatsnew" 별칭이 있습니다 git log ..@{upstream}
.
먼저 병합한 다음 문제를 제기하려면 임시 분기를 랜드마크로 만들 수 있습니다.
git fetch
git branch -c my_last_commit # or use -C to overwrite if it already exists
git merge
git diff my_last_commit...