我使用git进行源代码管理,我的mac上有一个本地存储库,github上有一个远程存储库。它们两者都是完全相同的。我自己工作,我是唯一一个在我的Web应用程序上工作的程序员。我不能让git行动正确 - 使用svn我可以简单地将代码提交到存储库和BAM!远程存储库神奇地拥有完全相同的文件...不是在git中,不,它就不会那么简单。我必须阅读一本该死的书只是为了使用这个愚蠢的东西。
所以问题是,你的开发周期是什么样的?我只想在github上使用与我在本地git存储库中完全相同的代码。这是我编码的方式:
我编写代码...添加,编辑,删除,修改文件....所以我在命令行执行此操作:
git add . # this is *suppose* to add all files that are not part of the repository
git commit -m 'I commited this because...'
git push # send it to github
现在,经过几周和数百次提交,github与我在本地存储库中的代码略有不同。
请在交易git& amp;之前帮我解决这个问题。 Windows的开源和svn或跳出窗外。
我很抱歉这里的语气,我真的很不高兴我在源代码库中发现不一致。这不是一种好感觉。我设想有一天我丢失了我的笔记本电脑然后github有旧代码。这看起来很愚蠢。
哦,还有一件事......当我删除文件时,我不想总是执行git rm /some/long/path/to/file.txt。有没有更简单的方法?这绝对是愚蠢而且太耗时。
感谢您的帮助。
溴
答案 0 :(得分:3)
git add .
实际上只会添加文件和对repo中已有文件的更改。尝试使用git add -all .
实际添加已删除的文件。
如果您只想删除文件而不进行其他更改,可以使用git add -u .
- 有关详情,请查看git-add手册页:http://www.kernel.org/pub/software/scm/git/docs/git-add.html
我最近刚开始在svn上使用git,而且,我必须承认,我最初也有一些困难。祝你好运!
答案 1 :(得分:2)
Github在这里有一个很好的页面,详细介绍了如何创建,提交和推送:http://help.github.com/creating-a-repo/。
尤其是:
git http://img.skitch.com/20100527-r6h2yp7m8tuxdfhppepjdsetfb.png
您可能需要git push origin master
(您需要先定义原点,然后阅读上述信息),而不仅仅是git push
。
另一个重要的事情是git commit -a
命令,它只是提交所有已更改的文件等,不需要单独git add
。
您可能还想查看git status
的输出,看看是否有任何可疑的东西可能是github不是精确副本的原因。
而且仅供参考,svn也是开源的:)
答案 2 :(得分:1)
“git status”为我提供了一个我在本地存储库中删除但仍存在于远程存储库中的文件的大列表。这是我的全部观点。我希望这两个存储库完全相同。我怎样才能做到这一点?
如果git status
显示这些文件,则表示尚未将它们添加到提交中并将其推送到主存储库。这不是Git的错,它是你的。由于您在本地工作副本上删除了东西而自动从主存储库中删除了内容的版本控制系统将是非常危险的版本控制系统。
执行git commit -a
(每http://www.kernel.org/pub/software/scm/git/docs/git-rm.html),它会将所有这些删除添加到提交中。提交和推送,你应该是最新的。
答案 3 :(得分:1)
如果您可以准确指定远程存储库与预期的不同(例如工作树中的内容),将会有所帮助。您间接识别的唯一问题是远程存储库仍包含您从本地工作树中删除的文件。
如果“已删除的文件仍存在于远程存储库中”是您唯一的问题,那么您应该从使用git add .
切换到git add -A
。前者只会添加跟踪文件中的新文件和阶段更改。后者将添加新文件,在跟踪文件中进行的阶段更改,以及删除不再在工作树中的文件。如果您更喜欢使用更多助记符选项名称,则可以使用--all
代替-A
。使用-A
/ --all
将无需git rm each/deleted/file
。