|
本帖最后由 finger|regnif 于 23-7-2014 17:50 编辑
蒙面超人 发表于 20-7-2014 20:50
天资愚钝,好多东西不是很明白。可能也是受CVCS毒害太深。初步的认识是GIT没有server的概念,一切都在自己的 ...
git 每个人的 repository 都能完整的存储所有信息. 当然如果你只是一个人玩的话, 删除了就没有了.
一个人玩的话可以备份到 github, bitbucket 之类的服务器上, 还能得到一些额外的功能 如 issuer tracker, wiki.
跟别的版本merge的话要看你用的什么了.
两个repositories之间能通信就行, 或者是通过第三方(如github, 如本地的服务器)进行共享.
如你可以在一台机器上有两个repository (c:\repo1, c:\repo2), 然后在repo1中用 git pull c:\repo2 就能直接从repo2 拉取代码.
两台局域网机器之间可以使用文件共享, 或者用一个服务器 client1 push 到 server, client2 pull from server, client 和 server的通信协议可以ssh, http, git, 文件共享.
github: 你发现某个开源项目 openssl 有 bug(通常你不会有权限对他们的代码直接修改), 于是fork一下 openssl 到你的github账号, 在你的开发机上对你的 openssl 项目进行clone从而下载代码到你的机器上. 然后你修复了这个bug 并 push 你的代码到你的 github/openssl. 你创建一个将 你的github中的代码 合并到 openssl 的 pull request. openssl 项目的开发人员将你的pull request merge到他们的代码中.
github: 如果你是openssl的开发人员, 那你可以直接 clone/modify/push, 不需要fork一个到你的账号. 当然你可能需要遵循该项目的一些规则.
取决于不项目的策略, 你可能会使用不同的开发方式:
* Checkout a branch(e.g. master)->modify->commit->push to server.
* 发现一个bug, 在服务器上创建一个issue, 说明一下bug原因, 如何解决之类的, commit 的时候引用 #191
这样看commit的时候就能link到issue, 从而比较容易知道你当时为什么要改代码.
* 同上, 但这次使用pull request/review/merge. 发现一个bug,
- 创建一个单独的branch来修复这个bug.
- push这个branch到github.
- 创建一个将 你的新branch merge 到 master(通常是master吧) 的pull request.
- 某(些)人 review the changes on your branch, 如果他觉得OK的话就按一下merge按钮.
以上openssl纯属举例, 不一定真的有这个项目在github上. 太灵活太多选择有时候也不是什么好事.
|
评分
-
查看全部评分
|