Ist es möglich, nur eine Datei in Git zu ziehen?

Lesezeit: 3 Minuten

Ist es moglich nur eine Datei in Git zu ziehen
Audrius Meškauskas

Ich arbeite an einem Git-Zweig, der einige fehlerhafte Tests enthält, und ich möchte diese Tests aus einem anderen Zweig ziehen (Änderungen zusammenführen, nicht nur überschreiben), in dem sie bereits behoben sind.

Ich weiß, dass ich es kann

git pull origin that_other_branch

aber das wird versuchen, viele andere Dateien zusammenzuführen, dafür bin ich noch nicht bereit.

Ist es möglich, nur die angegebene Datei (und nicht alles) aus diesem anderen Zweig zu ziehen und zusammenzuführen?

Dies ist kein Duplikat von Git-Pull-Request für nur eine Datei da alle Antworten auf diese Frage darin bestehen, die lokal geänderte Datei auf die Repository-Version zurückzusetzen, ohne Zweige zu ändern.

Ist es moglich nur eine Datei in Git zu ziehen
Chris

Hier ist eine etwas einfachere Methode, die mir bei der Recherche gerade eingefallen ist:

git fetch {remote}
git checkout FETCH_HEAD -- {file}

  • fatal: ungültige Referenz: FETCH_HEAD

    – Antony D’Andrea

    24. August 2017 um 18:46 Uhr

  • Dieser Antwort fehlt möglicherweise ein funktionierendes Beispiel. Es ist unklar, ob man sich als nächstes verpflichten muss.

    – Dr_Zaszuś

    16. August 2018 um 14:19 Uhr

  • @Chris brauchen wir {remote}, wenn wir bereits in Branch sind? Wenn ja, warum?

    – Wolke Cho

    25. September 2019 um 22:59 Uhr

  • Nicht dasselbe wie Pull, das eine Zusammenführung versucht, weshalb wir Pull verwenden möchten.

    – Josef K

    29. Januar 2020 um 7:14 Uhr

1646174886 917 Ist es moglich nur eine Datei in Git zu ziehen
Aleroot

Sie können auf diese Weise nur eine Datei abrufen und dann auschecken:

git fetch
git checkout -m <revision> <yourfilepath>
git add <yourfilepath>
git commit

Hinsichtlich der git checkout Befehl:

  • <revision> — ein Zweigname, dh origin/master
  • <yourfilepath> enthält nicht den Repository-Namen (den Sie erhalten, indem Sie auf klicken copy path Schaltfläche auf einer Dateiseite auf GitHub), dh README.md

  • Die von -m switch benötigten Hashcodes können mit git branch -v ausgegeben werden. Fantastisch!

    – Audrius Meškauskas

    30. April 2013 um 7:46 Uhr

  • Exzellent. Das hat mir mehr als einmal geholfen. Zur Verdeutlichung scheint das Flag -m mit dem Hash des Commits zufrieden zu sein, aus dem Sie Ihre einzelne Datei ziehen möchten.

    – rd108

    14. November 2013 um 22:36 Uhr


  • Das hat auch bei mir funktioniert. Allerdings habe ich git log auf meinem Remote-Zweig ausgeführt, um die Umkehrung zu finden: zB $ git log remotes/origin/master

    – Dan

    23. Dezember 2013 um 17:50 Uhr

  • Ist es möglich, eine bestimmte Datei zu ziehen, ohne andere Dateien zu ziehen?

    – Nagappa LM

    13. Mai 2015 um 10:53 Uhr

  • @aleroot wofür steht ?

    – Wakan Tanka

    1. Dezember 2016 um 14:11 Uhr

git checkout master -- myplugin.js

master = Zweigname

myplugin.js = Dateiname

  • und gibt es eine rückkehrmöglichkeit?

    – Liyuan

    25. März 2019 um 7:01 Uhr

  • vorher ‘git pull’ nicht vergessen 😉

    – matson kepson

    24. Mai 2019 um 12:39 Uhr

Die Antwort von @Mawardy hat bei mir funktioniert, aber meine Änderungen befanden sich auf der Fernbedienung, sodass ich den Ursprung angeben musste

git checkout origin/master -- {filename}

Ja, hier ist der Ablauf:

# Navigate to a directory and initiate a local repository
git init        

# Add remote repository to be tracked for changes:   
git remote add origin https://github.com/username/repository_name.git

# Track all changes made on above remote repository
# This will show files on remote repository not available on local repository
git fetch

# Add file present in staging area for checkout
git check origin/master -m /path/to/file
# NOTE: /path/to/file is a relative path from repository_name
git add /path/to/file

# Verify track of file(s) being committed to local repository
git status

# Commit to local repository
git commit -m "commit message"

# You may perform a final check of the staging area again with git status

  • Ich habe die Git-Checkout-Zeile verpasst, weil sie zwischen Kommentaren versteckt ist. Außerdem steht hier “git check” und nicht “git checkout”.

    – Müll80

    19. Mai 2021 um 12:39 Uhr

  • Ich habe die Git-Checkout-Zeile verpasst, weil sie zwischen Kommentaren versteckt ist. Außerdem steht hier “git check” und nicht “git checkout”.

    – Müll80

    19. Mai 2021 um 12:39 Uhr

905670cookie-checkIst es möglich, nur eine Datei in Git zu ziehen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy