Czy istnieje sposób sprawdzenia, czy plik pod określoną, względną ścieżką istnieje w pilocie? Nie mam nic przeciwko pobieraniu informacji, jeśli jest to jedyna opcja. Innymi słowy szukam plików git-ls z opcją określenia zdalnego i rozgałęzionego. Jestem zainteresowany tylko, jeśli plik istnieje (listę plików na oddziale zrobi, jak również), nie dbam o skrótów, diffs itpJak sprawdzić, czy plik istnieje w pilocie?
Odpowiedz
Można użyć
git cat-file -e <remote>:<filename>
który będzie wyjdź z zero, gdy plik istnieje. Zamiast <remote>
powyżej użyjesz nazwy zdalnego oddziału (ale może to być faktycznie dowolne odwołanie do obiektu drzewa). Aby użyć takiej zdalnej gałęzi, musisz skonfigurować i pobrać zdalne repozytorium (tj. Za pomocą git remote add
+ git fetch
).
Konkretny przykład:
$ git cat-file -e origin/master:README && echo README exists
README exists
$ git cat-file -e origin/master:FAILME
fatal: Not a valid object name origin/master:FAILME
Dwie rzeczy do uwaga:
- Zastosowanie
/
jako separatora ścieżki w nazwach plików, nawet na przykład Windows. <filename>
to pełna ścieżka (na przykładfoo/bar/README
) względem katalogu głównego repozytorium.
Można użyć git archive dostęp do poszczególnych plików bez pobierania żadnej innej części repozytorium:
if git archive --format=tar \
--remote=<remote_name-or-URL> master README >/dev/null; then
echo 'master has README'
else
echo 'master does not have README (or other error)'
fi
Usługa archiwum (upload-archive
) nie mogą być włączone na wszystkich serwerach lub repozytoriów choć, trzeba będzie przetestować go pod kątem serwerów i repozytoriów, do których musisz uzyskać dostęp.
Jeśli usługa archiwizacji nie jest dostępna, będziesz musiał pobrać obiekty w normalny sposób.
Jeśli nie masz jeszcze zdalnej konfiguracji dla danego repozytorium, możesz wykonać "płytkie" pobranie w FETCH_HEAD (musi to być zrobione w repozytorium Git, ale może być całkowicie niepowiązane lub nawet puste):
git fetch --depth=1 remote_name-or-URL master
if git rev-parse --verify --quiet FETCH_HEAD:README >/dev/null; then
echo "repository's master has README"
else
echo "repository's master does not have README"
fi
Jeśli zdalny zdefiniowane dla repozytorium, to prawdopodobnie po prostu chcesz zaktualizować go i uzyskać dostęp do pliku poprzez normalne zdalne śledzenie oddziałów:
git fetch remote_name
if git rev-parse --verify --quiet remote_name/master:README >/dev/null; then
echo "remote's master has README"
else
echo "remote's master does not have README"
fi
Świetne rzeczy! Naprawdę pomocny –
Ostrzegam: rozwiązanie 'git-archive' nie działa niezawodnie. wydaje się, że sprawdza tylko istnienie plików/katalogów najwyższego poziomu, np .: 'git archive --remote =
- 1. Jak sprawdzić, czy plik istnieje w ansibla?
- 2. Jak sprawdzić, czy istnieje katalog zawierający plik?
- 3. Jak najlepiej sprawdzić, czy plik cookie istnieje?
- 4. Jak sprawdzić, czy plik istnieje w Qt w języku C++
- 5. Jak sprawdzić, czy plik istnieje w C++ w sposób przenośny?
- 6. Jak sprawdzić, czy plik istnieje w katalogu Dokumenty w Swift?
- 7. Jak sprawdzić, czy plik już istnieje w folderze
- 8. Jak sprawdzić, czy plik istnieje w C#/.NET?
- 9. Jak sprawdzić, czy plik lub katalog plików istnieje w bash?
- 10. Jak sprawdzić, czy plik istnieje w aplikacji WindowsStore
- 11. Jak sprawdzić, czy plik zasobów istnieje w Javie?
- 12. jak sprawdzić, czy istnieje stała w php
- 13. Jak sprawdzić, czy katalog istnieje w Perlu?
- 14. Jak sprawdzić, czy plik nadal istnieje przy użyciu deskryptora pliku
- 15. Jak sprawdzić, czy plik lub katalog istnieje bez użycia fs.ist?
- 16. Jak uzyskać instalację Inno, aby sprawdzić, czy plik nie istnieje?
- 17. Delphi: jak sprawdzić, czy plik istnieje (ścieżka powyżej 255 znaków)
- 18. Jak sprawdzić, czy rekord istnieje?
- 19. Sprawdza czy plik istnieje
- 20. Jak sprawdzić, czy istnieje klasa?
- 21. Jak sprawdzić, czy nieruchomość istnieje?
- 22. Jak sprawdzić, czy dziecko istnieje?
- 23. Jak sprawdzić, czy fragment istnieje?
- 24. Jak sprawdzić, czy tag istnieje w XSLT?
- 25. Jak sprawdzić, czy makro istnieje w CMake
- 26. Jak sprawdzić, czy klasa istnieje w css?
- 27. Jak sprawdzić, czy widżet istnieje w Tkinter?
- 28. Jak sprawdzić w SQLite, czy tabela istnieje?
- 29. Jak sprawdzić, czy istnieje słowo w zdaniu
- 30. Jak sprawdzić, czy kolumna istnieje w Pandach?
Według '' masz na myśli zdalny oddział, co oznacza, że musisz go skonfigurować zdalne i uruchom 'git fetch ' pierwszy; badasz oddział zdalny w repozytorium, więc musisz się upewnić, że jest on aktualny. –
Cascabel
Precyzyjnie, dzięki. Włączyłem to do odpowiedzi. – earl