Как создать папку в репозитории github?

Введение¶

Git (произн. «гит») — распределённая система управления версиями файлов. Проект был создан Линусом Торвальдсом для управления разработкой ядра Linux. На сегодняшний день поддерживается Джунио Хамано.

Система спроектирована как набор программ, специально разработанных с учётом их использования в скриптах. Это позволяет удобно создавать специализированные системы контроля версий на базе Git или пользовательские интерфейсы. Например, Cogito является именно таким примером фронтенда к репозиториям Git, а StGit использует Git для управления коллекцией патчей.

Git поддерживает быстрое разделение и слияние версий, включает инструменты для визуализации и навигации по нелинейной истории разработки. Как и Darcs, BitKeeper, Mercurial, SVK, Bazaar и Monotone, Git предоставляет каждому разработчику локальную копию всей истории разработки; изменения копируются из одного репозитория в другой.

Удалённый доступ к репозиториям Git обеспечивается git-daemon, gitosis, SSH- или HTTP-сервером. TCP-сервис git-daemon входит в дистрибутив Git и является наряду с SSH наиболее распространённым и надёжным методом доступа. Метод доступа по HTTP, несмотря на ряд ограничений, очень популярен в контролируемых сетях, потому что позволяет использовать существующие конфигурации сетевых фильтров.

Удаление файлов из git репозитория и из stage

Удаление файла из stage

Вначале разберемся со stage. Создадим ещё один файл.

> touch main.c

“Отправим” файл main.c в stage.

> git add main.c

Внесем изменения в README.md.

> echo "# README" > README.md

Информацию об этом также отправим в stage.

> git add README.md

Посмотрим на состояние stage.

> git status
On branch master
Changes to be committed:
  (use "git reset HEAD ..." to unstage)

        modified:   README.md
        new file:   main.c

Если нам необходимо убрать из stage, какой-то из этих файлов (main.c или README.md), то для этого можно воспользоваться командой git –rm cashed , сделаем это для файла main.c.

> git rm --cached main.c
rm 'main.c'

Теперь посмотрим на состояние рабочей директории и stage.

> git status
On branch master
Changes to be committed:
  (use "git reset HEAD ..." to unstage)

        modified:   README.md

Untracked files:
  (use "git add ..." to include in what will be committed)

        main.c

Видно, что изменения в файле README.md готовы для коммита, а вот файл main.c перешел в состояние – неотслеживаемый. Отправим main.c в stage и, после этого, сделаем коммит в репозиторий.

> git add main.c
> git commit -m "add main.c and do some changes in README.md"
 add main.c and do some changes in README.md
 2 files changed, 1 insertion(+)
 create mode 100644 main.c

Удаление файлов из git репозитория

Удалить файл из репозитория можно двумя способами: первый – удалить его из рабочей директории и уведомить об этом git; второй – воспользоваться средствами git. Начнем с первого способа. Для начала посмотрим, какие файлы у нас хранятся в репозитории.

> git ls-tree master
100644 blob 7e59600739c96546163833214c36459e324bad0a    README.md
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391    main.c

Удалим файл main.c из рабочей директории.

> rm main.c
> ls
README.md

Уведомим об этом систему git.

> git rm main.c
rm 'main.c'

Вместо команды git rm можно использовать git add, но само слово add в данном случае будет звучать несколько неоднозначно, поэтому лучше использовать rm. На данном этапе еще можно вернуть все назад с помощью команды git checkout — , в результате, в нашу рабочую директорию будет скопирован файл из репозитория. Создадим коммит, фиксирующий удаление файла.

> git commit -m "remove main.c"
 remove main.c
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 main.c

Теперь в репозитории остался только один файл README.md.

> git ls-tree master
100644 blob 7e59600739c96546163833214c36459e324bad0a    README.md

Второй способ – это сразу использовать команду git rm без предварительного удаления файла из директории. Вновь создадим файл main.c и добавим его в репозиторий.

> touch main.c
> git add main.c
> git commit -m "add main.c file"
 add main.c file
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 main.c
> git ls-tree master
100644 blob 7e59600739c96546163833214c36459e324bad0a    README.md
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391    main.c

Удалим файл из репозитория.

> git rm main.c
rm 'main.c'

> git commit -m "deleted: main.c file"
 deleted: main.c file
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 main.c

Файла main.c больше нет в репозитории.

> git ls-tree master
100644 blob 7e59600739c96546163833214c36459e324bad0a    README.md

Его также нет и в рабочем каталоге.

> ls
README.md

Удалите файл README.md из репозитория самостоятельно.

используя git filter-branch

у меня была аналогичная проблема с громоздкими двоичными тестовыми данными из импорта Subversion и написал о удаление данных из репозитория Git.

скажите, что ваша история git:

отметим, что — нестандартный, но очень полезный псевдоним. С switch, мы можем видеть изменения дерева, связанные с каждой фиксацией.

в» неосторожном » фиксации (имя объекта SHA1 которого ce36c98) файл DVD-rip добавлен случайно и удален в следующем коммите, cb14efd. Используя технику описано в вышеупомянутом блоге, команда:. варианты:

варианты:

  • удаляет коммиты, которые становятся пустыми (то есть, не менять дерево) в результате работы фильтра. В типичном случае этот параметр создает более чистую историю.
  • имена временного каталога, который еще не существует для создания отфильтрованной истории. Если вы работаете на современном Linux распределение, указав дерево приведет к более быстрому исполнению.
  • это главное событие и работает против индекса на каждом шаге в истории. Вы хотите удалить везде, где он найден, но он не присутствует во всех коммит. Команда удаляет DVD-rip, когда он присутствует, и не терпит неудачу в противном случае.
  • описывает как переписать имена тегов. Фильтр операция идентичности. Ваш репозиторий, как и пример выше, может не иметь тегов, но я включил эту опцию для полной общности.
  • указывает конец параметров для
  • после является стенографией для всех refs. Ваш репозиторий, как и пример выше, может иметь только один ref (master), но я включил этот параметр для полной общности.

после некоторого вспенивания история теперь:

обратите внимание, что новый «Неосторожный» commit добавляет только и что фиксация «удалить DVD-rip» больше не находится в главной ветви. Ветка с надписью содержит оригинальные совершает в случае, если вы допустили ошибку

Чтобы удалить его, выполните следующие действия в

для более простой альтернативы клонируйте репозиторий, чтобы отбросить ненужные биты.

С помощью clone URL копирует объекты, а не создает только жесткие ссылки.

теперь ваша история:

имена объектов SHA1 для первых двух коммитов («индекс «и» страница администратора») остались прежними, потому что операция фильтра не изменила эти коммиты. «Неосторожный» заблудился!—17—> и «страница входа» получила нового родителя, поэтому их SHA1s сделал изменить.

Как добавить PPA репозиторий

Основную часть мы уже раскрыли выше, ничего сложного в этом нет, общая структура команды следующая:

sudo add-apt-repository ppa:репозиторий/ppa

Пример добавления PPA видеоредактора мы рассмотрели уже:

sudo add-apt-repository --remove ppa:openshot.developers/ppa

не всегда репозиторий имеет такой вид, наведу пример репозитория второго вида:

deb http://security.ubuntu.com/ubuntu precise-security main 

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

Откройте терминал (Ctrl+Alt+T), далее выполним следующую команду:

sudo gedit /etc/apt/sources.list

откроется на редактирование файл sources.list ничего не удаляем, вообще не трогаем ничего если не понимаете за что отвечает тот или иной репозиторий, в самый низ как пример добавим наш тестовый репозиторий:

deb http://security.ubuntu.com/ubuntu precise-security main 

нажмем кнопку «Сохранить». Этот же репозиторий мы можем так же добавить в терминале с помощью команды следующего вида:

sudo add-apt-repository `deb http://security.ubuntu.com/ubuntu precise-security main`

после выполним команду для обновления списка пакетов с добавленных и имеющихся репозиториев:

sudo apt update

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

И дополнительный способ добавления репозитория не используя терминал, а используя графический интерфейс, перейдем в Параметры системы — Программы и обновления — Другое ПО, ниже ищем кнопку «Добавить», с примера выше мы в этом окне можем добавить как пример репозиторий:

deb http://security.ubuntu.com/ubuntu precise-security main

с добавлением репозиториев я надеюсь все понятно.

интерактивные перебазирования

история:

вы действительно хотите удалить от «нерадивого» как хотя вы никогда не добавляли его, а затем «удалить DVD-rip» бесполезно для вас. Таким образом, наш план перехода в интерактивную ребазу-сохранить «страницу администратора», отредактировать «небрежно» и отбросить «удалить DVD-rip.»

под управлением запускает редактор со следующим содержанием.

выполняя наш план, мы изменяем его на

то есть мы удаляем строку с «Remove DVD-rip «и меняем операцию на» Careless » на а не .

Save-выход из редактора выводит нас в командной строке со следующим сообщением.

как говорится в сообщении, мы находимся на «неосторожном» фиксации, которую мы хотим отредактировать, поэтому мы запускаем две команды. первый удаляет файл-нарушитель из индекса

Второй изменяет или изменяет «неосторожный», чтобы быть обновленным индексом и инструктирует git повторно использовать старое сообщение фиксации. Наконец, идет вперед с остальной частью операция rebase

первый удаляет файл-нарушитель из индекса. Второй изменяет или изменяет «неосторожный», чтобы быть обновленным индексом и инструктирует git повторно использовать старое сообщение фиксации. Наконец, идет вперед с остальной частью операция rebase.

это дает история:

Практика: создаем свой собственный шаблон

  1. Создаем новый репозиторий: для этого в верхнем правом углу нажимаем +

  2. При создании заполняем:

    • Repository name — в моем случае repository-template;
    • Description — краткое описание проекта;
    • оставляем Public, хотя можно выбрать и Private;
    • Ставим галочку инициализации README:
    • Выбираем лицензию, под которой будет проект:

      Так как в моем случае шаблон общий, то и gitignore не нужен: он будет добавлен уже для конкретного проекта и языка программирования.

      Поэтому нажимаем Create Repository, тем самым завершая процесс создания. Система автоматически перенесет нас в свежесозданный репозиторий.

  3. Заполнение Community Profile: в созданном репозитории заходим во вкладку Insights и выбираем Community:

    Как видим, осталось заполнить Code of Conduce, Contributing, Issue Template, Pull Request template.

    На примере с Code of Conduct покажем, как добавить их на проект.

    Нажимаем add, система предлагает выбрать Contributor Covenant или Citizen Code of Conduct:

    Я выбираю первое и нажимаю Review and Submit.

    Далее, можно будет отредактировать этот файл и уже закоммитить.

    Внизу выбираем опцию Commit directly to the master branch и нажимаем Commit new file:

    В итоге, если перейдем обратно в Community Profile, обнаружим, что Code of Conduct помечен как добавленный:

    Contributing и Issue Template добавляется аналогичным образом, поэтому показывать этого не буду. Сделайте сами 😉

  4. Добавляем Pull Request template.

    А вот об этом поговорим отдельно.

    Для этого в корне репозитория нажимаем Create new file:

    Имя файла должно быть следующее: .github/pull_request_template.md.

    Таким образом, весь Community Profile будет заполнен:

  5. Добавляем маркер Template Repository.

    Для этого нужно перейти в опцию Settings в репозитории и поставить галочку там, где написано Template Repository:

    И всё, шаблон для создания новых проектов готов. Тем самым мы сохраним кучу времени в будущем, когда нужно будет создавать новые проекты. А еще это поможет не пропустить важные детали, так как часто бывает, что забываешь что-то добавить, например лицензию или понятный шаблон для issue.

8 ответов

162

Git не хранит пустые папки . Просто убедитесь, что в папке есть файл, такой как doc / foo.txt, и запустите или и папка будет добавлена в ваш локальный репозиторий после того, как вы (и появится на github, как только вы толкнул)

ответ дан moopet 4 сент. 2012 г., 11:12:33
источник

95

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

  • перейдите в папку, внутри которой вы хотите создать другую папку
  • нажмите на Новый файл
  • в текстовом поле для имени файла сначала напишите имя папки, которую вы хотите создать
  • затем введите . Это создает папку
  • Вы можете добавить больше папок аналогично
  • наконец, дайте новому файлу имя (например, который обычно используется для того, чтобы сделать git-трек в противном случае пустыми папками, но не функцией git)
  • наконец, нажмите кнопку « Применить новый файл» .

ответ дан Sнаđошƒаӽ 14 дек. 2015 г., 5:53:47
источник

27

Сначала вы должны клонировать репозиторий на вашу локальную машину.

Затем вы можете создавать локальные папки и файлы внутри вашего local_directory и добавлять их в репозиторий, используя

Вы также можете добавить все, используя.

Обратите внимание, что git не отслеживает пустую папку. Обходной путь — создать файл внутри пустой папки, которую вы хотите отслеживать

Я обычно называю этот файл но это может быть любое имя, которое вы выберете.

Наконец, вы фиксируете и возвращаетесь на github

Для получения дополнительной информации о Git, проверьте Pro Git book .

ответ дан Dikei 4 сент. 2012 г., 11:17:37
источник

22

Для тех, кто использует веб-браузер. Вы можете сделать следующее:

  • Один раз в главном хранилище
  • Нажмите на Создать новый файл.
  • В поле имени файла вверху введите имя вашей папки
  • Используйте клавишу после имени папки. Эта косая черта создает папку
  • Вы можете увидеть новое поле рядом с именем папки, где вы можете ввести имя вашего файла.
  • В поле фиксации нового файла ниже вы можете ввести описание вашего файла.
  • Установите переключатель «Фиксация» непосредственно в главную ветку.
  • Нажмите на кнопку « Сохранить новый файл»
  • Вы увидите, что новый каталог будет создан.

ответ дан nevosial 10 янв. 2017 г., 9:22:05
источник

4

Создайте новый файл, а затем по имени файла используйте косую черту. Например

Java / Helloworld.txt

ответ дан J.Doe 22 февр. 2016 г., 8:30:10
источник

1

На самом деле Github не создает пустую папку.

Например, чтобы создать папку в :

  • создать папку с именем документа

  • создайте имя файла под docs

  • открыть Github для рабочего стола

    Он автоматически синхронизируется и будет там.

Я надеюсь, что это помогает.

ответ дан saurav singh 20 июл. 2017 г., 17:12:24
источник

Вы просто создаете необходимые папки в своем локальном хранилище. Например, вы создали приложение, каталоги конфигурации.

Вы можете создавать новые файлы в этих папках.

Для правил Git:

  1. Сначала нам нужно добавить каталог, файлы.
  2. Затем зафиксируйте эти добавленные файлы.

Команда Git для коммита:

  1. git добавить приложение / config /
  2. мерзавец совершить

Затем дайте сообщение о коммите, затем сохраните коммит.

Затем нажмите на ваш удаленный репозиторий, 1. git push origin remote

ответ дан Mohanraj 4 сент. 2012 г., 11:51:05
источник

Чтобы добавить новый каталог, все, что вам нужно сделать, это создать новую папку в вашем локальном хранилище. Создайте новую папку, добавьте в нее файл. Теперь перейдите к своему терминалу и добавьте его, как будто вы добавляете обычные файлы в GIT. Поместите их в репозиторий и проверьте статус, чтобы убедиться, что вы создали каталог.

ответ дан Zuha Karim 11 дек. 2017 г., 10:28:16
источник

Основы работы с удаленным репозиторием¶

git clone — создание копии (удаленного) репозитория

Для начала работы с центральным репозиторием, следует создать копию оригинального проекта со всей его историей локально.

Клонируем репозиторий, используя протокол http:

git clone http://user@somehost:port/~user/repository/project.git

Клонируем репозиторий с той же машины в директорию :

git clone /home/username/project myrepo

Клонируем репозиторий, используя безопасный протокол ssh:

git clone ssh://user@somehost:port/~user/repository

У git имеется и собственный протокол:

git clone git://user@somehost:port/~user/repository/project.git/

Импортируем svn репозиторий, используя протокол http:

git svn clone -s http://repo/location

-s

git fetch и git pull — забираем изменения из центрального репозитория

Для синхронизации текущей ветки с репозиторием используются команды git fetch и git pull.

git fetch — забрать изменения удаленной ветки из репозитория по умолчания, основной ветки; той, которая была использована при клонировании репозитория. Изменения обновят удаленную ветку (remote tracking branch), после чего надо будет провести слияние с локальной ветку командой git merge.

git fetch /home/username/project — забрать изменения из определенного репозитория.

Возможно также использовать синонимы для адресов, создаваемые командой :

git remote add username-project /home/username/project

git fetch username-project — забрать изменения по адресу, определяемому синонимом.

Естественно, что после оценки изменений, например, командой , надо создать коммит слияния с основной:

git merge username-project/master

Команда сразу забирает изменения и проводит слияние с активной веткой.

Забрать из репозитория, для которого были созданы удаленные ветки по умолчанию:

git pull

Забрать изменения и метки из определенного репозитория:

git pull username-project --tags

Как правило, используется сразу команда .

git push — вносим изменения в удаленный репозиторий

После проведения работы в экспериментальной ветке, слияния с основной, необходимо обновить удаленный репозиторий (удаленную ветку). Для этого используется команда git push.

Отправить свои изменения в удаленную ветку, созданную при клонировании по умолчанию:

git push

Отправить изменения из ветки master в ветку experimental удаленного репозитория:

git push ssh://yourserver.com/~you/proj.git master:experimental

В удаленном репозитории origin удалить ветку experimental:

git push origin :experimental

В удаленную ветку master репозитория origin (синоним репозитория по умолчанию) ветки локальной ветки master:

git push origin master:master

Отправить метки в удаленную ветку master репозитория origin:

git push origin master --tags

Изменить указатель для удаленной ветки master репозитория origin (master будет такой же как и develop)

git push origin origin/develop:master

Добавить ветку test в удаленный репозиторий origin, указывающую на коммит ветки develop:

git push origin origin/develop:refs/heads/test

Еще мои статьи

  • Debug в Intellij IDEA: гайд для новичков
  • Гайд по созданию клиента для Skyscanner API и его публикации в jCenter и Maven Central
  • Гайд по созданию клиента для Skyscanner API и его публикации в jCenter и Maven Central
  • Создание системы мониторинга цен на авиабилеты: пошаговое руководство
  • Создание системы мониторинга цен на авиабилеты: пошаговое руководство
  • Создание системы мониторинга цен на авиабилеты: пошаговое руководство
  • Логирование: что, как, где и чем?
  • Как тестовое задание на собеседование превратилось в open-source библиотеку
  • История Успеха. 20 часов программирования в неделю, магистратура и личная жизнь
  • Как найти работу? Советы по рассылке резюме

Выводы

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

  • Использовать программы с графическим интерфейсом для работы git. Они наглядно показывают какие файлы будут добавлены в коммит. Во всех средах разработки как правило есть либо дополнения, либо встроенные средства для работы с git которые помогают избежать таких ошибок. Если среда разработки которую вы используете не имеет средств работы с git, то есть графические интерефейсы. Я когда-то писал небольшой обзор графических интерфейсов для git;
  • Избегать таких опасных команд как , и . Вместо них добавлять отдельные файлы с ;
  • Использовать чтобы интерактивно просматривать и добавлять файлы;
  • Перед добавлением файлов внимательно просматривать какие файлы были изменены и могут попасть в коммит .

Полезные ссылки:

Ссылка на основную публикацию