git学习
1.0 git和svn的区别
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就郁闷了。
集中管理方式在一定程度上看到其他开发人员在干什么,而管理员也可以很轻松掌握每个人的开发权限。
但是相较于其优点而言,集中式版本控制工具缺点很明显:
服务器单点故障
容错性差
Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
2.0 git 的工作流程
1.从远程仓库中克隆 Git 资源作为本地仓库。
2.从本地仓库中checkout代码然后进行代码修改
3.在提交前先将代码提交到暂存区。
4.提交修改。提交到本地仓库。本地仓库中保存修改的各个历史版本。
5.在修改完成后,需要和团队成员共享代码时,可以将代码push到远程仓库。
3.0 git的安装
安装git for windows
安装TortoiseGit
4.0 github使用
注册登录,start a project 填写项目名称 确定
使用ssh推送项目,首先生成密钥对
在windows下我们可以使用 Git Bash.exe来生成密钥,可以通过开始菜单或者右键菜单打开Git Bash
git bash 执行命令,生命公钥和私钥
命令: ssh-keygen -t rsa
执行命令完成后,在window本地用户.ssh目录C:\Users\用户名\.ssh下面生成如下名称的公钥和私钥:
添加公共密钥到github
4.1使用命令行将本地仓库推送到远程
git remote add origin git@github.com:helloworldmygithub/repo1.git
git push -u origin master
呵呵 推送失败,提示connect to host github.com port 22: Connection refused
见鬼 确定操作无误 百度可知缺少配置文件config, port要改为443
进入.ssh的目录,创建config配置文件,文件内容
Host github.com
User 1401457589@qq.com
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443
重新打开窗口,输入命令,输入yes,成功上传工程
4.2 使用图形界面也可以,在GitHub上新建仓库repo2
4.3 使用https也可以,在GitHub上新建仓库repo3
4.4克隆下载github项目
命令行克隆: git clone git@github.com:helloworldmygithub/repo3.git
图形化界面克隆:右击克隆添加url即可
4.5 修改文件并解决冲突
推送新增文件(右键同步 push推送)
获取新增文件(右键同步 pull拉取)
a修改提交本地,同步服务器
b修改提交本地,同步服务器冲突,同步失败
b拉取最新代码pull,文件变为黄色三角,说明冲突
打开查看文件
aaaa
<<<<<<< HEAD
2222
=======
1111111
>>>>>>> 5715cfbf8ce6f9dfe754a7254d5cf423820eb194
修改文件
aaaa
1111111
2222
右键点击解决冲突,提交本地,同步远程
5.0 搭建私有仓库
远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改。GitHub就是一个免费托管开源代码的远程仓库。但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用。
搭建Git服务器需要准备一台运行Linux的机器,在此我们使用CentOS。以下为安装步骤:
1、安装git服务环境准备
yum -y install curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-devel gcc cc
2、下载git-2.5.0.tar.gz
1)解压缩
2)cd git-2.5.0
3)autoconf
4)./configure
5)make
6)make install
3、添加用户
adduser -r -c 'git version control' -d /home/git -m git
此命令执行后会创建/home/git目录作为git用户的主目录。
5、设置密码
passwd git
输入两次密码
6、切换到git用户
su git
7、创建git仓库
git --bare init /home/git/first
注意:如果不使用“--bare”参数,初始化仓库后,提交master分支时报错。这是由于git默认拒绝了push操作,需要.git/config添加如下代码:
[receive]
denyCurrentBranch = ignore
推荐使用:git --bare init初始化仓库。
6.0 连接私有仓库
私有git服务器搭建完成后就可以向连接github一样连接使用了,但是我们的git服务器并没有配置密钥登录,所以每次连接时需要输入密码。
使用命令连接:
$ git remote add origin ssh://git@192.168.25.156/home/git/repo1
这种形式和刚才使用的形式好像不一样,前面有ssh://前缀,好吧你也可以这样写:
$ git remote add origin git@192.168.25.156:repo1
使用TortoiseGit同步的话参考上面的使用方法
7.0分支与合并
创建分支:可以使用创建分支然后切换,也可以直接切换/检出,在里面创建分支
切换到master分支,先创建一个text.txt文件,在修改一个hello文件到达v8
切换到dev1分支,新建一个文件zhangsan.txt文件,在修改hello文件到达v6
想要将dev1合并到master分支
首先切换到master分支,然后选择合并,选择从dev1合并
修改hello文件解决冲突,标记解决冲突resolve,提交
8.0 在idea中使用git
安装好IntelliJ IDEA后,如果Git安装在默认路径下,那么idea会自动找到git的位置,如果更改了Git的安装位置则需要手动配置下Git的路径。
选择File→Settings打开设置窗口,找到Version Control下的git选项:选择git的安装目录后可以点击“Test”按钮测试是否正确配置
在idea中创建一个工程,例如创建一个java工程,名称为idea-git-test
在菜单中选择“vcs”→Import into Version Control→Create Git Repository... 目录最好选择工程的上级目录
本例中应该选择idea-projects目录,然后点击“OK”按钮,在工程的上级目录创建本地仓库,那么idea-projects目录就是本地仓库的工作目录,此目录中的工程就可以添加到本地仓库中。也就是可以把idea-git-test工程添加到本地仓库中。
选择之后在工具栏上就多出了git相关工具按钮:
直接点击commit按钮,将工程提交至本地仓库
推送到远程仓库
在github上创建一个仓库然后将本地仓库推送到远程。
在工程上点击右键,选择git→Repository→push,
或者在菜单中选择vcs→git→push
点击“Define remote”链接,配置https形式的URL,git形式的无法通过。然后点击OK
输入用户名密码,记住用户名密码
从远程仓库下载工程
checkout from version control ->git->复制仓库路径->clone->yes->next->next
分支:vcs->git->branches ->create创建分支 ->选择并checkout切换分支