Git 是一款免费的、开源的、分布式的版本控制系统。旨在快速高效地处理无论规模大小的任何软件工程。 每一个 Git克隆 都是一个完整的文件库,含有全部历史记录和修订追踪能力,不依赖于网络连接或中心服务器。 其最大特色就是“分支”及“合并”操作非常快速、简便。 官方网站为: http:/// 可以下到最新版的, Windows, Linux版本和说明等。 github是开源软件存放的库,相当于源代码界的博客:),GitHub可以托管各种git库,并提供一个web界面。提供私有和共有2种方式。
安装 Linux $sudo apt-get install git-core (可以使用git) $sudo apt-get install git-gui (可以使用图形化工具gitk) $sudo apt-get install gitg (可以使用图形化工具gitg, 比较好用一点) Windows 安装 msysGit 和 TortoiseGit。 msysGit 是windows版本,TortoiseGit是windows上的图形版本工具。 安装完以后,会在右键的菜单上出现, Git, 和 TortoiseGit。 msysGit的一些配置(主要是中文处理) 1,修改…/Git/etc/git-completion.bash alias ls=”ls --show-control-chars --color=auto” 说明:可以正常显示中文文件名 2,修改…/Git/etc/inputrc set ouput-meta on set convert-meta off 说明:可以输入中文 3,修改…/Git/etc/gitconfig [gui] encoding = utf-8 [i18n] commitencoding = GB2312 说明:因为在windows新建文件是GB2312的编码,所以得告诉Git,要不然会被当成默认的utf-8给送出去,而不能识别。 [User] name = xxx email = xxx@gmail.com
配置 git 配置文件在, /etc/gitconfig, ~/.gitconfig, .git/config下。 可以这样配置,如果添加'-global’选项,就会作为默认值。 $git config –global user.name “xxx” $git config –blobal user.email “xxx@gmail.com” 初始化一个新的git仓库 $cd myproject $git init 现在有了空的git存储,'.git’目录。然后可以添加文件了, $git add . $git commit –m “initial commit” 有了一个完整的git存储后,就可以 git log来查看。 $git log 克隆一个git仓库 git可以通过很多的协议进行网络通信,其中有三个最主要的协议,分别是ssh,http,git(专职为git服务的协议) 不管使用何种协议克隆git存储,格式都是这样:'git clone uri' git 方式: $git clone git://github.com/xxx/hello.git $cd hello $git log http方式: $git clone http://github.com/xxx/hello.git $cd hello $git log 生成密钥 请确保私钥的安全,保护代码的安全。 $ssh-keygen –t rsa 一直回车,就行,将会生成两个文件,一个私钥(id_rsa),一个公钥(id_rsa.pub) 私钥保存在当前用户的.ssh目录下,公钥交服务器管理人员添加到服务器上。 工作流程 单人开发, *修改文件 *提交更改 (git commit –a), #-a 的意思是git先将变更了的文件先载入(stage),然后提交 *重复 协作开发, *修改文件 *查看变更 *载入变更 *提交载入的变更 *重复 *上传 分支和合并 查看现在的分支 $git branch *master 可以看到目前只有一个分支,'master’, *代表我们目前工作在此分支上。 创建新分支 $git branch xxx_test $git checkout xxx_test (切换到xxx_test分支) 这样,我们就不用担心在master分支上频繁的操作了。 合并分支 $git branch master $git merge xxx_test 如果合并有冲突的话,那就打开文件,文件有有冲突的地方都标出来了,手工改写,然后保存,再重新载入。 $git add main.c $git commit –am “fix confilect” 删除分支 $git branch –d xxx_test 标签 查看标签 $git tag $git tag –l v1.0.* (可以使用通配符) $git show v1.0 创建标签 有两种最主要的标签--轻量级标签(lightweight)和带注释的标签(annotated)。 #带注释的标签 $git tag –a v1.0 –m “version 1.0” $git tag 共享标签 默认情况下,'git push'命令不会将标签上传到远程服务器上。为了共享这些标签,你必须在'git push'命令后明确添加-tags选项 $git push --tags 日志 显示补丁 $git log –p 查看统计数字 $git log --stat 查看分支拓扑图 $git log --pretty=oneline --graph 查看日期区间 $git log --pretty=oneline --before=”2011-1-1” --after=”2010-12-01” 查询作者 $git log --pretty=oneline --author=xxx_author 差异比较 使用gitk+meld $git diff $sudo apt-get install meld
常用命令 好多命令都可以用gitk, gitg在linux上实现。windows上的话,可以用图形版的。
git init | 初始化 仓库 | git add xxx_file | 添加文件; add, mv, rm, | git add --all | 添加所有新文件 | git commit –am “comment” | 提交 | git log | 查看信息 | git clone xxx_url | 克隆整个仓库 | git branch | 查看分支 | git branch xxx_branch | 创建分支 | git checkout xxx_branch | 切换到分支 | git checkout xxx_filename | 撤销未提交的修改 | git merge xxx_branch | 合并分支 | git branch –d xxx_branch | 删除分支 | git pull | 将远程仓库项目同步到本地 | git push | 将本地仓库项目同步到远程 | git tag –l v1.0.* | 查看标签 | git show v1.0 | 查看v1.0版本信息 | git tag –a v1.0 –m “v1.0” | 创建标签 | git push --tag | 共享标签到服务器 | git revert | 还原最近一次的修改 | git revert commit-id | 还原指定版本的修改 |
|