2010-12-12 124 views
0

我有点奇怪的问题(我认为...)。如果其中一些没有意义,请与我联系;我是一个git noob。git推到分支

我有一个已经存在的Android项目,在它自己的文件夹中,完全在我克隆的回购之外。我想要做的只是将这个android项目的内容推送到我的同事的回购。我希望该项目成为回购协议新分支的一部分。我如何去做这件事?我可以打开bash,去我的android项目文件夹,并添加一个遥控器回购并推送到它?或者我想我首先需要把这个项目变成回购的一个分支?如果是这样,如果我实际上在本地回购文件夹之外工作,我将如何使其成为回购的一个分支?

困惑了吗? ;)

也许最好的办法是将整个项目复制到本地repo文件夹,然后创建一个分支并推送它?

我喜欢一些关于如何最有效地做到这一点的分步说明。

非常感谢。

+0

你看过这个吗? http://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide – WarrenFaith 2010-12-12 17:38:18

回答

1

看来,这两个项目在很大程度上是独立的,所以我强烈怀疑最好的办法是改变你的资料库的文件结构,而不是使用分支:

/path/to/repo 
    +- projectA 
    +- projectB 

所以一台机器上做到这一点:

mkdir /path/to/repo 
git init 
cp -r /path/to/projectA . 
git add . 
git commit -m "Initial import of project A" 

然后在另一台机器上:

cd /path/to 
git clone <url for repo set up on the first machine> 
cd repo 
cp -r /path/to/projectB . 
git add . 
git commit -m "Initial import of project B" 

不要在这一点上打扰git分支。您现在可以处理项目A并创建提交;另一个开发人员可以在B上工作。不会有任何冲突,你们都会看到彼此的变化。

我也建议地方建立一个纯仓库,你都推到和拉:

mkdir /path/to/centralrepo 
git init --bare 

然后,您可以既克隆这个仓库。 Git是点对点的,但有一个你认为是“中心”的存储库还是不错的,尤其是如果你打算在将来增加持续集成或者新的开发者。

看来你对git分支的含义有点困惑。它是一个时间分支,而不是空间分支。也就是说,一个git分支意味着代码开发在过去的某个时间点是分散的,但是这两个分支在某个时刻有共同的历史。例如,空间分支是包含新项目的新文件夹。

如果分支A与分支B完全不同,那么分支并没有什么意义:您可能还有一个全新的存储库。

对不起,这是一个很长的答案。我希望这有帮助!

+0

非常感谢您的及时和彻底的回应。我需要一些澄清。当我mkdir你是否说我应该在那里创建一个名为“项目A”的子文件夹,然后从那里继续?另外,“cp -r/path/to/projectA”是什么。做? – LuxuryMode 2010-12-12 18:44:58

+0

是的,在每个项目的资源库中创建一个子文件夹。 'cp'命令将现有的'projectA'文件夹复制到当前目录。如果项目尚不存在,您可以用'mkdir projectX'替换它们。我假设你在Linux上;在Windows中,您可能只需将项目文件夹拖放到存储库中即可。在所有这些的最后,你在/ path/to/repo中有一个存储库,里面有两个文件夹(和一个.git文件夹)。 – 2010-12-12 20:04:42

+0

谢谢。要成功推送,我需要添加,提交,然后推送,对吗?我如何添加整个项目文件夹,我拖放到回购?我会只做“git add project /”吗? 此外,我试图推... – LuxuryMode 2010-12-13 00:48:08

0

让“在其自己的文件夹中的android项目”为“A”,“我克隆的回购”为“B”。 :)

首先将您的项目A转换成git存储库,如果它不是一个。 (git init

然后,您可以将它作为远程B(git remote add ...,请参阅帮助)添加并将其拉入B(git branch --help)的本地分支。然后你可以把它推到B的其他遥控器中。

如果你可以提供路径名,我可以写一个例子。

+0

非常感谢。你是否同意卡梅伦这个呢? – LuxuryMode 2010-12-12 18:46:07

+1

@LuxuryMode是的,我同意分支机构不是适用于不同代码库的正确模型。我建议把两者放在单独的软件仓库中并从中进行工作。 – moeffju 2010-12-12 18:59:33