在前面的文章里面,经常会看到使用Git来下载代码,比如
$ git clone https://github.com/zeromq/zeromq4-x.git
Git 是有Linux开发者Linus Torvalds开发的分布式版本控制软件,最初用于Linux内核代码管理,它不需要服务器端软件,就可以进行版本控制,使得离线/本地开发非常方便。与SVN不同,Git基本在本机工作(就像在本机也搭建了一个SVN服务器),具有以下优点:
- 可以向本地提交代码,当服务器不可用时,仍然可以离线提交代码
- 可以向本地提交代码,在本地功能开发完成后,再向服务器提交有用的变更,项目代码不会有频繁变更
- 分布式存储,每个开发者均有一份代码,不用担心服务器上的代码丢失
- 支持Pull Request,功能完成后通知其他成员进行代码审查
Git提倡使用主干作为稳定可发布的代码,使用分支进行开发,与我们的软件管理思路大致一致:分支开发,分支测试,分支/主干发布。多人协作项目,需要有良好的分支开发意识,以免在主干上互相冲突和影响软件稳定。
通过MINGW32安装Git,在Windows下面也可以使用Git。它提供了在右键菜单里面集成了Git管理的一些操作,也提供了Bash进行交互。Git常用操作包括:
# 获取帮助 $ git --help # 获取某个git命令的帮助信息,使用默认浏览器查看 $ git help branch # 初始化当前目录作为git仓库 $ git init # 复制一个远程仓库到本地 $ git clone <url> # 切换到主分支master(默认) $ git checkout master # 设置个人账号信息,提交代码时会同时提交这些信息 $ git config --global user.name "mystery" $ git config --global user.email [email protected]: # 提交全部代码变更 $ git add --all # 仅提交boot.php $ git add boot.php # 仅提交路径generator/lib $ git add generator/lib # 仅提交路径generator/lib $ git add generator/lib # 删除文件 test.php $ git rm test.php # 移动文件 test.php $ git mvtest.php # 查看当前代码是否有未提交的变更 $ git status # 比较代码差异 $ git diff # 确认提交代码并备注 $ git commit -m 'test comment ' # 自动提交所有文件变更,不需要上面的步骤了 $ git commit -a -m 'added new comments' # 查看提交历史记录 $ git log # 查看历史记录前2条,并显示变更 $ git log -p -2 # 撤销上一次commit修改 $ git reset HEAD # 与远程仓库库同步 $ git fetch origin $ git rebase origin/master # 多个本地合并commit合并成一个 $ git rebase -i origin/master # 推送本地更新到远程仓库 $ git push --force origin feature-x # 在master分支上创建分支develop,-b则表示创建分支并切换到该分支 $ git checkout -b develop master # 在develop分支上创建feature-x分支 $ git checkout -b feature-x develop # 列出所有分支 $ git branch # 创建master分支 $ git branch master # 删除分支feature-x $ git branch -d feature-x # 在mater上面合并feature-x分支代码 $ git checkout master $ git merge feature-x # 合并远程仓库代码到本地 $ git pull origin master $ git fetch origin $ git merge --no-ff origin/master # 查看当前镜像 $ git tag # 为当前仓库创建一个镜像标签 $ git tag -a v1.0 -m 'publish '
在已有项目目录上使用git
git init . git remote add origin <repository-url> git pull origin master git add . git commit -am "commit message" git push origin master
Git还提供了一个工具,可以将svn仓库代码导入git仓库,参考这里。
GitHub是一个著名的在线代码托管/分享/交流网站,提供免费的代码托管服务,支持分布式版本控制软件Git管理的工程代码,方便交流和协作。在这里可以找到各种各样的开源软件代码,比如PHP-SRC,对于程序员的帮助也是显而易见的,反之从一个程序员关注的项目也可以看出一个人的开发方向和水平。
GitHub开发了一个客户端用于与GitHub网站进行交互,隐藏了一些操作的细节,相比SVN要大气,方便一些。但是在线安装的方式对于国内并不方面。。
通过GitHub客户端可以直接创建、管理GitHub线上托管的代码。
与TortoiseSVN类似,也有TortoiseGit用于Windows下面的Git管理。
作公司内部的代码管理,可以使用GitLab来搭建私有的代码托管服务器,参考这里。
参考链接:
Git 使用规范流程
Github使用指南
Pro Git(中文版)
使用 Git 管理源代码
Git工作流程
Git 分支管理
介绍一个成功的 Git 分支模型
从其他代码管理工具迁移到Git
Git分支管理策略
[Sever Hacks] 搭建私有 GitLab 代码托管服务器