Git概述
Git是一个免费开源的分布式版本控制(版本控制是指在软件开发过程中记录代码、配置文件及说明文档等文件的变更;确保由不同人编写的同一项目得到变更与记录)工具,旨在快速高效的管理项目
git和svn对比
- svn是集中式的,具有一个svn中央服务器,用户通过客户端来上传下载代码都通过svn服务器,由中央服务器来进行统一管理
- git是分布式的,没有中央服务器,每个人的电脑就是一个完整的版本库,开发者通过远程仓库(github/gitee)分享各自的修改,开发过程可以是离线的
zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5aSn6I-c5q-U,size_20,color_FFFFFF,t_70,g_se,x_16)
git工作流程
- 从远程仓库克隆git资源作为本地仓库
- 从本地仓库中checkout代码到工作区,然后进行代码修改
- 提交前先将代码添加到暂存区,暂存区存放的是工作区修改过后的内容
- 从暂存区提交修改,提交到本地仓库,本地仓库中保存修改的各个历史版本
- 修改完成之后,需要和团队成员共享代码时,可以将代码push到远程仓库
本地仓库
创建本地仓库
- git-gui创建:打开git-gui程序,选择create new repository,输入目标路径
- git-bash创建:在目标目录下打开git-bash,键入命令git init
- tortoise创建:在目标目录下右键选择在这里创建版本库
创建仓库后会生成一个一个.git的目录,该目录就是本地仓库,创建仓库的目录即为该仓库的工作区,windows下为隐藏文件
本地版本库的文件操作
- 将文件移动到工作区,右击使用tortoise工具的添加,文件将被添加到暂存区
- 右键选择Git提交,将文件提交到本地版本库
- 每次在工作区修改或删除文件后需要重新提交到版本库,版本库才会变化
远程仓库
本地仓库到远程仓库文件推送
ssh方式
- 创建ssh,在git-bash下输入命令
ssh-keygen -t rsa 生成ssh,默认会在用户目录(c:/user/lenovo)下生成一个.ssh目录,目录下文件id_rsa为ssh私钥,id_rsa.pub为公钥 - 打开gitee的设置-》SSH公钥,将公钥保存到gitee
- 创建远端URL,右击选择git同步-》管理,点击网络将ssh客户端设置为git安装目录的ssh.exe(git/usr/bin/ssh.exe),点击远端自定义远端名,URL为gitee仓库页面显示的ssh的url,puuty密钥为刚刚创建的私钥(私钥加密,公钥解密)
- 推送
http方式
- 创建远端url,url为gitee仓库页面显示的https的url,无需指定putty密钥直接创建
- 推送
克隆远程仓库内容到本地
在工作区的父目录下右键,点击克隆,指定远程仓库的url和保存的本地路径即可将远程仓库克隆到本地
修改文件冲突解决
在多方对远程仓库的内容进行修改时,如果A对文件进行修改后,远程仓库文件内容发生变更,此时B的文件和远程仓库中的文件不同,B进行变更就会出现冲突,B需要先拉取文件,可以查看到两次修改的内容,手动将冲突解决后使用工具的解决冲突之后才可以推送到远程仓库
私有远程仓库
本地仓库和远程仓库其实没什么不同,远程仓库纯粹是为了保证全天开机以便多人进行代码交换,GitHub就是一个免费开源的代码托管平台。当团队内部进行代码交换,项目内容不宜开源时,可以选择将仓库设置为私有仓库或者自己搭建一个私有服务器
搭建私有服务器
- 安装服务环境准备:
yum -y install curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-devel gcc cc - 安装git:
tar zxvf git-2.9.5.tar.gz ,cd git-2.9.5 ,autoconf ,./configure ,make ,make install - 添加用户:
adduser -r -c 'git version control' -d /home/git -m git ,该命令会创建/home/git目录作为git用户的主目录 - 设置密码:
passwd git - 私有服务器的ssh url:ssh://git@+ip地址+仓库路径
分支
每次提交操作,Git都会把他们串成一条时间线,这条时间线就是分支。默认分支为master分支。HEAD指针指向当前分支,当前分支指向提交
单条分支
一条master分支时,随着提交操作,master分支的时间线会越来越长
多条分支
创建新的分支时,git会创建一个新的指针指向最新的提交,然后通过HEAD指向的地址来确定当前分支 每条分支可以进行各自的开发工作,产生分叉 经过多个分支开发的项目最终合并,分支合并是指将其他分支合并到master
Tortoise常用功能介绍
- Git同步:进行远程仓库与本地仓库的同步,包含推送、拉取等
- Git提交->master:将暂存区的内容提交到本地仓库,master表示当前分支
- 拉取:从远程仓库中拉取内容,不会合并到本地
- 获取:从远程仓库中拉取内容,并合并到本地
- 比较差异:显示暂存区的内容与仓库中内容的差异
- 显示日志:显示每次提交的日志信息
- 引用记录:指针(HEAD,master,dev)下的分支(操作记录时间线)
- 版本分支图:查看当前版本库的分支图
- 版本浏览器:查看版本库
- 检查已修改:查看暂存区修改过的文件
- 解决冲突:解决远程仓库多方修改造成的冲突
- 还原:撤销上一步操作
- 切换检出:切换分支
idea中使用git
创建本地仓库:VCS->Create Git Repository,一般指定为project的目录,创建之后工具栏会出现git的push、pull、commit图标,且原VCS变成Git
idea不需要添加代码到暂存区,idea会自动执行
|