2016-03-13 3 views
-1

Я пытаюсь нажать только измененные файлы в проекте и связанные с ними пути к определенной ветке в удаленном репо. Тем не менее, я всегда получаю все файлы в проекте. Так что, если я внести изменения в resources/views/index.php и я хочу иметь только что путь к папке и файл в ветке limited1, я делал это:Зафиксировать только определенный путь и файл для Git?

git add resources/views/index.php 
git commit -m "Path and File only" 
git push master limited1 

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

Нанесение удара по стене в течение нескольких часов и помощь.

+0

Я не уверен, что это имеет смысл - предполагается, что удаленная и локальная ветви должны быть одинаковыми (т. Е. Отслеживать один и тот же контент). Каков ваш прецедент, где вы хотите, чтобы локальное репо содержало различное содержимое для удаленного репо? –

+0

Push уже не отправляет повторяющиеся объекты, какой конкретный эффект вы пытаетесь достичь или избежать здесь? Вы собираетесь сделать архив этих файлов позже или что? – jthill

+0

Меня попросили сделать серию уроков, в которых пользователь учебника мог посмотреть на файлы, измененные в уроке.Для каждого урока будет начальная точка и конечная точка; оба из которых будут содержаться в их собственной отрасли. Из-за сложности общего проекта (это проект Laravel), я хочу изолировать файлы, которые работают, но все еще включают их пути, чтобы люди могли находить похожие файлы в своей системе. –

ответ

0

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

Этот link поможет.

+0

Спасибо, Milind. Так что я должен настроить .gitignore каждый раз, когда я хотел бы переключиться на другой набор файлов? IOW, нет ли способа сказать Git игнорировать все, кроме измененного пути/файлов? –

0

Git не сохраняет изменений; git хранит контент. Каждая фиксация - это полный снимок каждого файла в индексе (промежуточная область) во время фиксации.

Таким образом:

$ mkdir new; cd new; git init 
$ make-some-files a b c 
$ git add a b c; git commit -m first 

Первый коммит файлы a, b и c. Тогда:

$ append-stuff-to b; git add b; git commit -m second 

Второй коммит файлы a, b (модифицированный путем добавления материала), и c.

Если вы хотите второй совершить, чтобы иметь только файл b, просто удалите a и c перед совершением:

$ append-stuff-to b; git rm a c; git add b; git commit -m second 

При использовании git push, Git переводы совершает (не файлы) на пульте дистанционного управления , Конец содержит ссылки на дерево, а дерево содержит ссылки на файлы. Git вычисляет, на лету, все смены, необходимые для преобразования старых деревьев в более новые, и это включает в себя при выполнении git push. Это фактически принимает меньше время и пространство, чтобы отправить новую фиксацию только с файлом b изменено (одно изменение), чем отправить новый коммит с файлом b изменен и файлы a и c удален (три изменения).

Это означает, что если вы считаете, что экономите время и энергию и так далее, удалив материал, вы ошибаетесь: вы делаете больше работы как для себя, так и для git. (Вероятно, поэтому ваш вопрос был отклонен, хотя и не мной.)

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