2012-04-10 4 views
-1

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

Я использую следующую команду, чтобы клонировать удаленный репозиторий в локальные машины:

git clone -b master git://github.com/jquery/jquery.git jquerylocal 

Проблема возникает, когда мне нужно синхронизировать (получить изменения файлов и новые файлы, добавленными) в локальную папку с именем jquerylocal с последней версией, потому что моя машина добавить файлы с именем .DS_Store и дает мне следующую ошибку:

error: Your local changes to the following files would be overwritten by merge: 
    .DS_Store 

Я хотел бы сказать, мерзавец, чтобы игнорировать все файлы, которые я создал в моем местном directorey и заменить с новыми и вносить новые изменения в существующие файлы.

Я также хотел бы знать, как сказать git, чтобы игнорировать некоторые папки и файлы, которые нужно синхронизировать.

Большое спасибо.

+2

Вы действительно должны рассмотреть лучше название для ваших сообщений. «Git и github сомнения» звучат так, что это будет сомневаться в некоторой функциональности git или опротестовать, как это будет работать в определенной ситуации. Возможно, что-то вроде «Как удалить все удаленные изменения и перезаписать любые локальные изменения с помощью git?» – CodingWithSpike

+3

Почему люди отмечают это как «слишком локализованные»? Это очень распространенная проблема. Во всяком случае, это [точный дубликат около двухсот сообщений] (http://stackoverflow.com/search?q=git+DS_store), но это определенно по теме. – eykanal

+0

Возможный дубликат [Force git для перезаписывания локальных файлов при загрузке] (http://stackoverflow.com/questions/1125968/force-git-to-overwrite-local-files-on-pull) –

ответ

1

Создайте файл под названием .gitignore в корне вашего проекта.

Редактируйте файл и добавьте в него файл .DS_Store. git add .gitignore и git commit этот файл.

Затем git rm все эти файлы .DS. Нажимайте изменения.

Гит Синхронизация:

Прицепные изменения

git pull

Нажмите Изменения

git push

Все, что вам нужно сделать, это git pull на удаленной машине. Если есть какие-либо конфликты, это похоже на файлы, которые вы не должны совершать, поскольку они кажутся автоматически генерируемыми вашей системой сборки. Как только вы удалите все зафиксированные файлы .DS_Store и добавили их в .gitignore, вам больше не придется беспокоиться о синхронизации этого файла, поскольку он будет игнорироваться git.

+0

И с инструкцией, которую я даю git, чтобы синхронизировать старые файлы и добавлять новые? – gustavomanolo

+0

И как мне синхронизировать новые изменения со старыми файлами и добавлять новые каждый раз, когда появляются новые изменения в удаленном репозитории github? – gustavomanolo

+0

И как мне синхронизировать новые изменения с старыми файлами и добавлять новые каждый раз, когда появляются новые изменения в удаленном репозитории github? Какую команду мне нужно использовать без внесения изменений в удаленный репозиторий? Я просто хочу, чтобы новые файлы были на моих машинах, перезаписывающих старые, независимо от того, я ли потерял папку с локальной папкой, я просто хочу не влиять на файлы удаленного репозитория. – gustavomanolo

5

Вы хотите создать файл .gitignore, который даст указание Git делать то, что вы просите; игнорировать файлы с определенными шаблонами имен файлов. В вашем случае, вы хотите сделать файл .gitignore с одной строкой:

.DS_Store 

Это должно быть в корневом каталоге вашего репозитория Git.

Если вы уже зарегистрировались в нескольких файлах .DS_Store, вы хотите, чтобы Git остановил их отслеживание. Для этого вы можете использовать git rm .DS_Store.

+0

И как мне синхронизировать новые изменения с старыми файлами и добавлять новые при каждом изменении в удаленном репозитории github? – gustavomanolo

+0

@ gustavomanolo - Вы хотите «git push» и «git pull», но это очень простой вопрос; Я предлагаю вам ознакомиться с [Getting Started with Git] (http://progit.org/book/ch1-0.html). – eykanal

+0

И как мне синхронизировать новые изменения со старыми файлами и добавлять новые при каждом изменении в удаленном репозитории github? Какую команду мне нужно использовать без внесения изменений в удаленный репозиторий? Я просто хочу, чтобы новые файлы были на моих машинах, перезаписывающих старые, независимо от того, я ли потерял папку с локальной папкой, я просто хочу не влиять на файлы удаленного репозитория. – gustavomanolo

0

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

Этот вопрос может также ответить на то, что вам нужно: How do I force "git pull" to overwrite local files?

Смежные вопросы