如何分叉我自己的GitHub存储库?

Fue*_*ssi 29 git github git-fork

所以,Git的新手总数.一直在阅读指南,并认为我有基本但我很难实现这一目标.

我为我的通用标记源代码创建了一个repo.只是我为每次突破重用的东西.它被称为markupDNA.git

我想在我的mac站点目录中有不同的目录~/Sites/project-N.我建立在通用的东西上并在网站上突破的地方.我希望这些与我的主要git repo绑在一起,但是你不能分叉你自己的回购?

我希望我能做到这样的事情:

git clone <url> name
git add .
# make changes
git commit -m 'whatever'
git push
Run Code Online (Sandbox Code Playgroud)

但我不希望它推向原点.我希望它能推到markupDNA克隆的回购分支.但它似乎只是将我的更改推送到原始主人.我的想法是保持markupDNA清洁,并为我的不同项目提供大量的叉子,每个项目都将在我的硬盘上有自己的克隆目录.

有任何想法吗?

kub*_*ubi 23

你正在做正确的事.

cd ~/Sites/
git clone ~/Dev/markupDNA/ project-N
cd project-N
git remote rename origin markupDNA
Run Code Online (Sandbox Code Playgroud)
  • 导航到存储项目的文件夹
  • markupDNA使用自定义名称克隆基础仓库
  • 重命名遥控器,以便在以后想要"原点"时,可以

  • 这正是我需要使用我的骨架应用程序.为每个使用骨架应用程序的项目创建一个分支会很疯狂......这样,我仍然可以从骨架中提取更新 (3认同)

Bri*_*ell 19

使用分支可能要容易得多,而不是使用单独的分支.您仍然可以为每个分支机构单独签出; 只需多次克隆你的repo,并git checkout在每一个中使用它将它切换到适当的分支(或git checkout -b创建分支并立即检查它).创建分支后,可以使用它们将它们推送到GitHub git push origin <branchname>.


cnd*_*cnd 9

要创建自己的存储库的真正GitHub fork,您可以使用以下步骤:

  1. 创建一个组织
  2. 分到组织
  3. 重命名分叉项目
  4. 回到您的帐户

  • 当我将"转让所有权"归还给自己时,我得到"rdp已经在rdp/screen-capture-recorder-to-video-windows-free网络中有一个回购".但我可以使用组织中的副本,谢谢! (3认同)
  • 对于私人回购,当试图将其移回时,这不起作用......"此回购不可转让.请联系根回购的所有者" (3认同)

fun*_*oll 9

惊讶没有人引用这个人的博客帖子.

以下是相关步骤:

$ 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
Run Code Online (Sandbox Code Playgroud)

相反编辑配置的,我通常使用的组合git remote removegit remote add.

如果你想保持上游起源,你也可以使用git remote rename后跟git remote add.

  • 当已经有git命令进行适当的编辑时,使用vim有点傻:`$ git clone git@github.com:YOURNAME/foo.git bar`,`$ cd bar`,`$ git remote rename origin上游`,`$ git remote add origin git@github.com:YOURNAME/bar.git`,然后`$ git push -u origin master`. (3认同)

Iwa*_*aru 9

本教程提供了一个简单明了的答案:

  1. 创建一个新的空github forkedrepo存储库
  2. 在本地克隆:

    git clone https://github.com/YOURUSERNAME/forkedrepo.git
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将原始github存储库添加为新本地存储库的远程:

    git remote add upstream https://github.com/YOURUSERNAME/originalrepo.git
    
    Run Code Online (Sandbox Code Playgroud)
  4. 将原始github存储库的副本下载到新的本地存储库:

    git pull upstream master
    
    Run Code Online (Sandbox Code Playgroud)
  5. 将文件从新的本地存储库推送到新的github存储库:

    git push origin master
    
    Run Code Online (Sandbox Code Playgroud)

当然,这不会被github识别为原始存储库的一个分支,但这样做会很好.