Mam dwa różne pliki w różnych gałęziach. Jak mogę je porównać w jednym poleceniu?
Coś jak
# git diff branch1/foo.txt branch2/foo-another.txt
Mógłbym sprawdzić inny plik, porównać go i przywrócić, ale to dość brudne rozwiązanie.
Mam dwa różne pliki w różnych gałęziach. Jak mogę je porównać w jednym poleceniu?
Coś jak
# git diff branch1/foo.txt branch2/foo-another.txt
Mógłbym sprawdzić inny plik, porównać go i przywrócić, ale to dość brudne rozwiązanie.
Odpowiedzi:
git diff branch1:full/path/to/foo.txt branch2:full/path/to/foo-another.txt
Możesz także użyć ścieżek względnych:
git diff branch1:./relative/path/to/foo.txt branch2:./relative/path/to/foo-another.txt
git help diff
. Nawiasem mówiąc, nie muszą to być nazwy gałęzi przed dwukropkami, ale mogą to być dowolne odniesienia do zatwierdzeń (np. Wartości SHA-1).
git difftool
a następnie upuść branch2:
i, które pozwoli ci edytować plik w bieżącym drzewie roboczym (aby przenieść zmiany z branch1
)
Istnieje wiele sposobów porównywania plików z dwóch różnych gałęzi. Na przykład:
Jeśli nazwa jest taka sama lub inna:
git diff branch1:file branch2:file
Przykład:
git diff branch1:full/path/to/foo.txt branch2:full/path/to/foo-another.txt
Tylko jeśli nazwa jest taka sama i chcesz porównać swój obecny katalog roboczy z jakąś gałęzią:
git diff ..someBranch path/to/file
Przykład:
git diff ..branch2 full/path/to/foo.txt
W tym przykładzie porównujesz plik z aktualnej gałęzi z plikiem w gałęzi głównej.
Możesz sprawdzić tę odpowiedź:
Odpowiedź nie na temat - zobacz komentarze
Dodając to, uważam, że jest to bardzo prosta składnia:
git diff <branch1> <branch2> <filepath>
Działa również z referencjami względnymi, takimi jak na przykład:
# compare the previous committed state from HEAD with the state branch1 was 3 commits ago
git diff HEAD^ <branch1>~3 <filepath>
Możesz określić początek i zakres git diff
do zastosowania. Zakres jest oznaczony ..
notacją.
branch1=somebranch
branch2=someotherbranch
git diff ${branch1}..${branch2} -- file_path