git checkout определенные файлы несмотря на конфликт - PullRequest
2 голосов
/ 25 сентября 2010

Я часто нахожу себя желающим извлекать только определенные файлы в дереве, но не могу, потому что я изменил их локально и не хочу хлопот с попыткой выяснить слияние (я не хочу ничего объединять - я просто хочу git-версиюопределенные файлы).

Так как я могу принудительно оформить извлечение, например, «db-backup *», где эти файлы разбросаны по структуре каталогов?

например,

git-parent
  - dir1
    - db-backup1
  - dir2
    - db-backupA

спасибо,

р.

Ответы [ 2 ]

8 голосов
/ 25 сентября 2010

Есть несколько возможных решений, в зависимости от того, что вы хотите сделать

  • Если вы хотите отменить изменения , вы можете использовать

    git checkout -f <paths>...
    
  • Если вы хотите сохранить свои изменения на потом, но пока не беспокоиться о них, вы можете спрятать свои изменения и затем оформить заказ:

    git stash
    git checkout <paths>...
    

    Чтобы восстановить изменения, используйте git stash pop (или git stash apply).

  • Если вы хотите просто просмотреть версию Git файла (и, возможно, сохранить его во временном файле или под другим именем), вы можете использовать git show для этого:

    git show <file>
    
  • Если вы хотите извлечь какой-либо каталог или подмножество файлов в другом месте , вы можете использовать git archive, как описано в разделе «Примеры» в git -архив домашняя страница:

    git archive --format=tar --prefix=subdir/ HEAD:subdir | 
        (cd /var/tmp/ && tar xf -)
    

    Обратите внимание, что он будет использовать версию из HEAD (последнего коммита), а не из индекса, хотя обычно разницы не будет.

    Другим способом достижения этого является использование опции --temp, равной git checkout-index, хотя это можно считать хакерством.

НТН

0 голосов
/ 25 сентября 2010

git checkout <filename> отлично работает для меня, даже если есть изменения в файле.Что именно вы получаете как ошибку, и какую команду вы пытаетесь выполнить?Это, вероятно, должно работать:

find . -name 'db-backup*' | xargs git checkout --
...