Gibt es eine Möglichkeit zu überprüfen, ob eine Datei unter angegebenem relativen Pfad in einer Remote vorhanden ist? Mir geht es gut, wenn ich zuerst die Informationen abrufe, wenn es die einzige Option ist. Mit anderen Worten suche ich nach git-ls-Dateien mit einer Option zur Angabe von Remote und Branch. Ich bin nur daran interessiert, wenn die Datei (eine Liste der Dateien auf dem Zweig wird auch tun) vorhanden ist, ich kümmere mich nicht um Hashes, Diffs usw.Wie überprüfe ich, ob eine Datei in einer Fernbedienung existiert?
Antwort
Sie
git cat-file -e <remote>:<filename>
verwenden können, die Exit mit Null, wenn die Datei existiert. Anstelle von <remote>
oben würden Sie einen Remote-Zweig-Namen verwenden (aber es könnte tatsächlich jede Baum-Objekt-Referenz sein). Um einen solchen Remote-Zweig zu verwenden, müssen Sie das Remote-Repository konfigurieren und abrufen (z. B. mithilfe von git remote add
+ git fetch
).
Ein konkretes Beispiel:
$ 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
Zwei Dinge zu beachten:
- Verwenden
/
als Pfadtrennzeichen in Dateinamen, auch auf z.B. Windows. <filename>
ist ein vollständiger Pfad (wiefoo/bar/README
), relativ zum Stamm des Repository.
Sie können git archive verwenden, um einzelne Dateien zugreifen, ohne einen anderen Teil eines Endlagers Download:
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
Der Archivdienst (upload-archive
) kann allerdings nicht auf allen Servern oder Repositories aktiviert sein, müssen Sie um es für die Server und Repositories zu testen, auf die Sie zugreifen müssen.
Wenn der Archivierungsdienst nicht verfügbar ist, müssen Sie Objekte auf normale Weise abrufen.
Wenn Sie noch kein Remote-Setup für das fragliche Repository haben, können Sie einen "flachen" Abruf in FETCH_HEAD durchführen (dies muss in einem Git-Repository erfolgen, kann aber völlig unabhängig oder sogar leer sein):
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
Wenn Sie remote eine für das Repository definiert sind, dann möchten Sie es wahrscheinlich aktualisieren gerade und Zugriff auf die Datei durch die normalen Fernverfolgung Filialen:
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
Tolles Zeug! Wirklich hilfreich –
sei gewarnt: die 'git-archive' Lösung funktioniert nicht zuverlässig. Es scheint nur nach der Existenz der Dateien/Verzeichnisse auf der obersten Ebene zu suchen, z. B .: 'git archive --remote =
- 1. Wie überprüfe ich, ob eine IsolatedStorageFile existiert?
- 2. Wie überprüfe ich in Python, ob eine Variable existiert?
- 3. Wie überprüfe ich, ob eine Variable in eex existiert?
- 4. Wie überprüfe ich, ob eine Zeile existiert oder nicht?
- 5. Wie überprüfe ich, ob .htaccess prüft, ob eine neuere Datei existiert?
- 6. Wie überprüfe ich, ob in einem CachedRowSet ein Spaltenname existiert?
- 7. Wie überprüfe ich, ob ein Schlüssel in einem Datensatz existiert?
- 8. Wie überprüfe ich, ob die Spalte in der Tabelle existiert?
- 9. Wie überprüfe ich, ob ein Tag in XSLT existiert?
- 10. Wie überprüfe ich, ob eine Datei in Javascript existiert oder nicht?
- 11. Wie überprüfe ich, ob ich eine Datei löschen kann?
- 12. Wie überprüfe ich, ob ein couchdb Dokument existiert mit Python
- 13. Wie überprüfe ich, ob ein Firebase-Datenbankwert existiert?
- 14. Wie überprüfe ich, ob eine Datei existiert, die ihre URL verwendet, ohne sie herunterzuladen?
- 15. Wie überprüfe ich, ob eine FormData-Datei leer ist?
- 16. Wie überprüfe ich am besten, ob ein Cookie existiert?
- 17. Wie überprüfe ich, ob ein Verzeichnis mit SQL Server existiert?
- 18. Wie überprüfe ich, ob Element bei Jasmine existiert?
- 19. kann ich überprüfen, ob eine Datei unter einer URL existiert?
- 20. kann ich überprüfen, ob eine Datei unter einer URL existiert?
- 21. Wie überprüfe ich, ob eine Eigenschaft für einen dynamischen anonymen Typ in C# existiert?
- 22. Wie überprüfe ich, ob eine Datei eine reguläre Datei in C++ ist?
- 23. Wie überprüfe ich, ob eine Tabelle in sqlite3 C++ API existiert?
- 24. Wie überprüfe ich, ob eine Sitzungs-ID in redis bereits existiert
- 25. Wie überprüfe ich, ob in meinem Application Window bereits eine View existiert?
- 26. Wie überprüfe ich in Activiti, ob eine Variable gesetzt ist?
- 27. Wie überprüfe ich, ob eine Umgebungsvariable in PHP gesetzt ist?
- 28. Wie überprüfe ich, ob eine Variable in Swift deklariert ist?
- 29. Wie überprüfe ich, ob ein Schlüssel in einem Hash in Perl existiert?
- 30. Wie überprüfe ich, ob eine Datei auf einem Remote-Server mit der Shell
von '' Sie bedeuten Remote-Zweig, was bedeutet, dass Sie konfiguriert haben müssen die Fernbedienung und führen 'git fetch ' zuerst; Sie untersuchen die Remote-Zweigstelle in Ihrem Repo, Sie müssen also sicherstellen, dass sie aktuell ist. –
Cascabel
Genau, danke. Ich habe das in die Antwort aufgenommen. – earl