所以,Git的新手总数。正在阅读指南,并认为我有基本知识,但我很难实现这一目标。
我为我的通用标记源代码创建了一个repo。只是我为每次突破重用的东西。它被称为markupDNA.git
我想在我的mac站点dir ~/Sites/project-N
中有不同的目录。我建立在通用的东西上并在网站上突破的地方。我希望这些与我的主要git repo捆绑在一起,但是你不能分叉你自己的回购?
我希望我能做到这样的事情:
git clone <url> name
git add .
# make changes
git commit -m 'whatever'
git push
但我不希望它推向原点。我想把它推到它被克隆的markupDNA
repo的叉子上。但它似乎只是将我的更改推送到原始主人。我的想法是保持markupDNA
干净,并为我的不同项目提供很多分叉,每个项目都有自己的克隆目录在我的硬盘上。
有什么想法吗?
答案 0 :(得分:23)
你做的是正确的事。
cd ~/Sites/
git clone ~/Dev/markupDNA/ project-N
cd project-N
git remote rename origin markupDNA
markupDNA
回购
答案 1 :(得分:19)
使用branches可能要容易得多,而不是使用单独的分叉。您仍然可以为每个分支机构单独签出;只需多次克隆您的repo,并在每个repo中使用git checkout
将其切换到相应的分支(或git checkout -b
以创建分支并立即检查它)。创建分支后,可以使用git push origin <branchname>
将它们推送到GitHub。
答案 2 :(得分:9)
要创建自己的存储库的真正GitHub fork,您可以使用以下步骤:
答案 3 :(得分:9)
惊讶没有人引用这个人的blog post。
以下是相关步骤:
$ git clone git@github.com:YOURNAME/foo.git bar
$ cd bar
$ vim .git/config
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@github.com:YOURNAME/bar.git #replace foo with bar
$ git remote add upstream git@github.com:YOURNAME/foo.git
$ git push -u origin master
我通常使用git remote remove
和git remote add
的组合来代替编辑配置。
如果您想保留上游来源,也可以使用git remote rename
后跟git remote add
。
答案 4 :(得分:9)
This tutorial给出了一个简单明了的答案:
forkedrepo
存储库在本地克隆:
git clone https://github.com/YOURUSERNAME/forkedrepo.git
将原始github存储库添加为新本地存储库的远程位置:
git remote add upstream https://github.com/YOURUSERNAME/originalrepo.git
将原始github存储库的副本下拉到新的本地存储库:
git pull upstream master
将文件从新的本地存储库推送到新的github存储库:
git push origin master
当然,这不会被github识别为原始存储库的一个分支,但这很好。
答案 5 :(得分:1)
当然可以从克隆中克隆。在git中没有主要回购的概念。人们经常指定一个主要的回购,但这是按照惯例,而不是出于技术原因。
因此,您可以完全按照您的描述完成所有工作,甚至更多。
例如,在您的分组网站中保留一个分支是有意义的,可以添加或修改您的通用内容。您可以将它们提升到您的通用仓库并从那里再次分发。
答案 6 :(得分:0)
您也可以使用Github's import tool。
(它是从SVN等导入的,但你也可以使用它)
同样,这是在Github上创建一个新的存储库而不是真正的fork。但是你所有的分支,历史等都会在那里。