2010-09-22 3 views
28

Итак, общий новичок в Git. Прочитал гиды и подумал, что у меня есть основы, но у меня трудности с достижением этой цели.Как я могу открыть свой собственный репозиторий GitHub?

У меня есть репо, созданное для моего общего кода разметки. Просто вещи, которые я использую для каждого прорыва. Это называется markupDNA.git

Я хотел бы иметь разные каталоги на моих сайтах mac dir ~/Sites/project-N. Где я основываюсь на родовом материале и делаю прорыв сайта. Я бы хотел, чтобы они были привязаны к моему основному git-репо как вилки, но вы не можете развернуть свое собственное репо?

Я хотел бы сделать что-то вроде этого:

git clone <url> name 
git add . 
# make changes 
git commit -m 'whatever' 
git push 

Но я не хочу, чтобы подтолкнуть к зарождению. Я хочу, чтобы он нажал на развилку репо markupDNA, откуда он был клонирован. Но похоже, что он просто подталкивает мои изменения прямо к начальству. Идея состоит в том, чтобы сохранить markupDNA чистым и просто иметь много вилок для моих разных проектов, каждый из которых будет иметь свой собственный клонированный каталог на моем жестком диске.

Любые идеи?

+0

Возможный дубликат [Как вы разрабатываете собственный проект на github?] (Http://stackoverflow.com/questions/10963878/how-do-you-fork-your-own-project-on-github) – Shane

ответ

18

Возможно, будет намного проще использовать branches, вместо использования отдельных вилок. У вас все еще есть отдельные проверки для каждой ветки; просто клонируйте свое репо несколько раз и используйте git checkout в каждом, чтобы переключить его на соответствующую ветку (или git checkout -b, чтобы создать ветку и проверить ее сразу). После того, как вы создали ветви, вы можете нажать их на GitHub, используя git push origin <branchname>.

+0

Это похоже на хороший способ. Но когда я клонирую свое репо, создаю новую ветвь, отредактирую из этой ветки и пытаюсь сделать «git push [email protected]: rorourke/markupDNA.git», ветка не появляется на github? –

+1

Чтобы создать новую ветку на пульте дистанционного управления, вам нужно выполнить «git push origin ». Я удивлен, что команда, которую вы цитировали, не дает ошибки или не делает этого? – ebneter

+0

@Fuego как ebneter говорит, вам нужно указать название ветки, которое вы нажимаете при нажатии новых ветвей в GitHub. –

22

Вы поступаете правильно.

cd ~/Sites/ 
git clone ~/Dev/markupDNA/ project-N 
cd project-N 
git remote rename origin markupDNA 
  • Nav в папку, где хранятся ваши проекты
  • клонировать свою базу markupDNA репо с пользовательским именем
  • переименовать пульт, так что если вы хотите к «происхождения» позже, вы можете
+3

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

+0

Когда вам нужно обновить изменения из вашего скелетного приложения, вы можете использовать 'git pull MarkupDNA master' – Nick

1

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

Таким образом, вы можете делать все, как вы описали, и даже больше.

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

9

сделать истинную GitHub вилку собственного хранилища, вы можете использовать эти шаги:

  1. Создать организацию
  2. Вилка для организации
  3. Rename раздвоенного проекта
  4. Перехода обратно на ваш счет
+3

Я получаю: «rdp уже имеет репо в сети rdp/screen-capture-recorder-to-video-windows-free», когда я «передаю право собственности» себе. Но я могу использовать копию, найденную в организации, спасибо! – rogerdpack

+0

Да, у меня такая же ошибка ... Я не могу даже разветвить этот разветвленный проект себе после переименования. Хотелось бы, чтобы GitHub «забыл», что это была вилка ... – Kidburla

+0

Можете ли вы подробнее рассказать о том, как использовать «git pull-rebase upstream master», я этого не понимаю. Этот метод в post выдает ошибку при попытке '4. вернитесь к своей учетной записи. – Noitidart

10

Удивленный никто не ссылался на этого парня blog post.

Вот соответствующие шаги:

$ git clone [email protected]:YOURNAME/foo.git bar 
$ cd bar 
$ vim .git/config 
[remote "origin"] 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    url = [email protected]:YOURNAME/bar.git #replace foo with bar 
$ git remote add upstream [email protected]:YOURNAME/foo.git 
$ git push -u origin master 

Вместо редактирования конфигурации, я обычно использую комбинацию git remote remove и git remote add.

Вы также можете использовать git remote rename, а затем git remote add, если хотите сохранить восходящее начало вокруг.

+0

Просто любопытно, но почему вы хотите развить свой собственный проект? – yan

+0

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

+2

Использование vim немного глупо, когда уже есть команды git для внесения соответствующих изменений: '$ git clone [email protected]: YOURNAME/foo.git bar',' $ cd bar', '$ git remote rename origin upstream',' $ git remote add origin [email protected]: YOURNAME/bar.git', а затем '$ git push -u origin master'. –

8

This tutorial дает простой и однозначный ответ:

  1. Создать новую пустую GitHub fokedrepo хранилище
  2. Clone локально:

    git clone https://github.com/YOURUSERNAME/forkedrepo.git 
    
  3. Добавьте исходный репозиторий Github в качестве пульта дистанционного управления из новый местный репозиторий:

    git remote add upstream https://github.com/YOURUSERNAME/originalrepo.git 
    
  4. Потяните вниз копию исходного репозитория GitHub для вашего нового локального хранилища:

    git pull upstream master 
    
  5. Пуш файлы из вашего нового локального хранилища в новое хранилище GitHub:

    git push origin master 
    

Это не будет признано github как вилка исходного репозитория, конечно, но это так же хорошо, как и получается.

0

Вы также можете использовать Github's import tool.

(это сделано для импорта из SVN, и т.д., но вы можете использовать его для этого тоже)

  • Создать новый репозиторий в Github. ВАЖНО: не «инициализировать с README»
  • На следующем экране нажмите «Импорт кода»
  • Затем вставьте URL в Github репо вы хотите импортировать. (screenshot)

Опять же, это создает новый репозиторий, а не настоящую вилку на Github. Но все ваши ветви, история и т. Д. Будут там.