Usuń zmodyfikowany plik z żądania ściągnięcia

111

W tej chwili mam 3 zmodyfikowane pliki (brak nowych plików) w żądaniu ściągnięcia.

Chciałbym usunąć jeden z tych plików z żądania ściągnięcia, tak aby żądanie ściągnięcia zawierało tylko zmiany w dwóch plikach i pozostawiło trzeci w oryginalnym, nietkniętym stanie.

Próbowałem kilku rzeczy (sprawdzanie oryginalnej wersji pliku itp.), Ale nadal wyświetla się jako zmieniony plik w PR.

Czy jest na to rozwiązanie?

jlee
źródło
Jeśli modyfikacje pliku są w swoich własnych zatwierdzeniach, możesz wykonać interaktywną zmianę bazy i usunąć zmiany wpływające na plik, który chcesz niezmieniony, a następnie wykonać wymuszenie wypychania do gałęzi. Github powinien to automatycznie wykryć.
Dentych

Odpowiedzi:

257

Przełącz się do gałęzi, z której utworzono żądanie ściągnięcia:

$ git checkout pull-request-branch

Zastąp zmodyfikowany plik (i) plikiem w innej gałęzi, rozważmy jego wzorzec :

git checkout origin/master -- src/main/java/HelloWorld.java

Zatwierdź i wyślij go do pilota:

git commit -m "Removed a modified file from pull request"
git push origin pull-request-branch
Arpit Aggarwal
źródło
4
Nie działa, pokazując błąd: pathspec „{file / path.js}” nie pasuje do żadnego pliku (ów) znanych gitowi.
raftaar1191
8
To działające i sprawdzone rozwiązanie, po prostu sprawdź swoją ścieżkę poprawnie
Pavan T
2
działa to w przypadku plików wokół pliku, na którym faktycznie chcę wykonać akcję ... więc nie sądzę, że jest to coś nie tak ze ścieżką
Tim Boland
1
W przypadku tych, którzy mają problem z błędem: pathspec '{file / path.js}' nie pasuje do żadnego pliku (ów) znanych gitowi. Mam to, gdy próbowałem zresetować plik, który nie istniał w gałęzi pochodzenia / głównej
Dmitry Malugin
1
@ArpitAggarwal to działa dobrze. Dziękuję bardzo.
Chaklader Asfak Arefe
10

Chciałbyś zmienić zatwierdzenie, a następnie wykonać wymuszone wypychanie, które zaktualizuje gałąź za pomocą PR.

Oto, jak radzę ci to zrobić:

  1. Zamknij PR, aby ktokolwiek go przeglądał, nie ściągał go, dopóki nie wprowadzisz zmian.
  2. Wykonaj miękki reset zatwierdzenia przed niechcianą zmianą (jeśli jest to ostatnie zatwierdzenie, którego możesz użyć, git reset --soft HEAD^lub jeśli jest to inne zatwierdzenie, chciałbyś zastąpić 'HEAD ^' identyfikatorem zatwierdzenia)
  3. Odrzuć (lub cofnij) wszelkie zmiany w pliku, których nie zamierzałeś aktualizować
  4. Zrób nowe zatwierdzenie git commit -a -c ORIG_HEAD
  5. Wymuś Push do swojej gałęzi
  6. Ponownie otwórz żądanie ściągnięcia

Teraz, gdy twoja gałąź została zaktualizowana, pull request będzie zawierać twoje zmiany.

Oto link do dokumentacji Gits, gdzie mają całkiem niezły przykład w sekcji Cofnij zatwierdzenie i ponów .

Keif Kraken
źródło
-5

Żądanie ściągnięcia to po prostu: żądanie scalenia jednej gałęzi w drugą.

Twoje żądanie ściągnięcia nie „zawiera” niczego, to tylko znacznik z napisem „proszę scal tę gałąź z tą”.

Zestaw zmian, które PR pokazuje w interfejsie WWW, to tylko zmiany między gałęzią docelową a gałęzią funkcji. Aby zmodyfikować żądanie ściągnięcia, należy zmodyfikować gałąź funkcji, prawdopodobnie z wymuszonym wypchnięciem do gałęzi funkcji.

W twoim przypadku prawdopodobnie będziesz chciał zmienić swoje zatwierdzenie. Nie jestem pewien co do konkretnej sytuacji, ale jakaś kombinacja interaktywnej bazy danych add -ppowinna Cię rozwiązać.

Chris Kitching
źródło