W jaki sposób w git określę wszystkie istniejące linie, które były od konkretnego autora. Powiedzmy na przykład, że Tony pracował nad moim projektem i chciałem znaleźć wszystkie linie w mojej gałęzi rozwoju, które wciąż istnieją i pochodziły z zatwierdzenia autorstwa Tony'ego?Znajdź wszystkie aktualne linie zmodyfikowane przez autora
7
A
Odpowiedz
7
Może po prostu git blame FILE | grep "Some Name"
.
Albo jeśli chcesz rekurencyjnie winę + przeszukiwania wielu plików:
for file in $(git ls-files); do git blame $file | grep "Some Name"; done
Lub jeśli szukasz jakiegoś innego wyjścia niż to, co można uzyskać z powyższego, należy rozważyć aktualizację pytanie być bardziej jednoznacznie o żądanym wyjściu.
Uwaga: Początkowo sugerowałem użycie poniższego podejścia, ale problemem, z którym można się z nim spotkać, jest to, że może również znaleźć pliki w katalogu roboczym, które nie są faktycznie śledzone przez git, a więc git blame
niepowodzenie dla tych plików i przerwanie pętli.
find . -type f -name "*.foo" | xargs git blame | grep "Some Name"
7
sideshowbarker jest głównie poprawne, ale stała druga komenda:
find . -type f -exec git blame {} \; | grep "Some Name"
Choć wolałbym zrobić:
for FILE in $(git ls-files) ; do git blame $FILE | grep "Some Name" ; done | less
Co robi to, co chcesz różnić się od 'git winy 'zapewnia? – wnoise
@Wnoise Szukam sposobu, aby w zasadzie wyszukać git winy za wszystkie pliki i po prostu grep tylko dane wyjściowe dla konkretnego autora. – stevebot