如何使用git修改开源项目并让其他人更新项目而不会丢失我的更改

时间:2010-09-05 01:16:15

标签: git version-control open-source

所以,我想对status.net(开源Twitter克隆)进行一些更改。

假设我想这样做,以便人们可以在他们的“推文”中添加字体,假设。

但是,我想继续从status.net人那里获得更新...让我们说他们做了一些更改并修复了一些安全漏洞或添加了一个新的辅助功能。

所以,我想要

git clone <url to status.net repo>
那么,什么? :)

如何进行更改,将它们正确存储在git中,并正确地合并(?)来自“net”的新更改?

与“(在此处进行更改)”交织在一起的一系列命令对我有很大帮助。

谢谢!

3 个答案:

答案 0 :(得分:2)

要做出改变,你首先戴上你的程序员帽子并做你一直做的事情。我真的无法帮助你: - )

接下来,您需要提交更改。提交,只需说:

$ git commit -a # -a means "automatically stage all changed files git knows about"

并在提示符下键入描述性消息。请注意,git中的“commit”确实将您的更改公开。它只是提交到您的本地存储库副本;在你将来git push之前,没有人会看到它。

将其他人所做的更改合并到您的存储库副本中:

$ git pull

如果您可以直接访问存储库,则可以通过以下方式向公众提供您之前执行的git commit

$ git push

否则,您可以将提交转换为补丁并将其发送给友好的维护者:

$ git log
commit 75b17eeca0394e27759acf2f6b039851a5a28f98
Author: Your Name 
Date:   Tue Aug 10 01:10:19 2010 -0400

    Did something wonderful.

commit f9f677a465a5746874dc2f2c86cc444ffa28a020
Author: Your Name 
Date:   Fri Aug 6 04:06:01 2010 -0400

    Fixed a horrible horrible error of mine.

$ git show 75b17eeca0394e27759acf2f6b039851a5a28f98 > wonderful.diff
$ git show f9f677a465a5746874dc2f2c86cc444ffa28a020 > fix.diff

最后,如果要将新文件添加到存储库,请说:

git add foo.html # don't forget to git commit -a like you would any change

要删除文件,您可以像平常一样删除它们(使用rm shell命令),然后git commit -a更改。

答案 1 :(得分:1)

以下链接似乎处理所有细节: http://status.net/wiki/IntroToUsingGit

目前尚不清楚您是否希望其他人查看您的存储库,以及您是否希望最终将更改推送回status.net主git存储库,以便集成商将您的更改合并到主干中。 / p>

答案 2 :(得分:0)

除非您是受信任的开发人员,否则您可能无法恢复更改。在这种情况下,你会播种给他们一个“拉动请求”。本文将告诉您如何做到这一点:http://www.kernel.org/pub/software/scm/git/docs/git-request-pull.html