GIt安装和使用经验总结
此文是本菜鸡在实践多次git搭建内网服务版本库和GitHub上的使用总结
部分参考了这位大佬的博客https://www.cnblogs.com/dee09...
另外推荐廖雪峰大佬的git博客
进入正题
一.Git 公司服务器的搭建
注意注意,下面的方法是常规的git服务器搭建过程,其实完全可以使用gitlab之类的开源软件搭建git服务器,下面这种方式其实比较鸡肋,gitlab就相当于自己搭建github,值得一试~
前提是服务器配置稍好,gitlab运行占用大约4G内存
1.Git服务器端安装
我的服务器是Centos7 所以使用yum命令安装
yum install -y git
上面必须保证服务器可联网
安装完成后使用命令查看git版本
git --version
显示版本即视为安装成功
2.下载客户端安装Git For Windows
地址https://git-scm.com/download/win
一直默认安装就可以,右击鼠标可以出现git bush选项即视为安装成功
3.在服务器端创建一个git的用户
注:这个用户是用来做版本库所有者的区分的,不是作为上传代码的用户的,只需要一个就可以了。
执行命令
添加名为git的用户
useradd git
为用户git 设置密码
passwd git
4.服务器端创建git仓库
可以设置任意位置为git仓库,我们把git仓库放在/home/data/git/下
git仓库一般以*.git这样格式的文件夹来表示,随意命名
首先创建git仓库所需文件夹
mkdir -p /home/data/git/testgit.git
初始化git仓库
git init --bare /home/data/git/testgit.git
系统会提示初始化一个空的版本库
将testgit.git文件夹的用户权限给予git用户即可
cd /home/data/git
chown -R git:git /home/data/git/testgit.git/
至此,我们已经完成一个服务器端的git仓库搭建。
二. 连接远程git仓库
完成仓库搭建后即可连接远程仓库
连接需要服务器主机ip,我的是192.168.25.108,下面将服务器远程仓库克隆到本地。
1.在装有客户端的winsows电脑使用git bash执行
git clone [email protected]:/home/data/git/testgit.git
输入yes 回车,提示输入密码,无视继续回车走起
结束后会在电脑 C:/Users/用户名/.ssh/ 中生成一个文件known_hosts 这个文件会保存所有连接过的ip信息,下一次连接这个IP就不会有上面的提示了。
使用文本编辑文件可以看到我们的ip信息
此时我们就可以将远程git仓库的代码克隆到本地了。
再次执行
git clone [email protected]:/home/data/git/testgit.git
输入上面设置的git用户的密码即可将远程代码克隆到本地
一般情况下我们为了提交代码快捷简便都会采用SSH免密登录的方式来访问远程仓库,这样就不会频繁的输入密码
2.SSH免密登录及端口问题解决
客户端创建SSH公钥私钥,在git bash中执行(下面的邮箱地址随意填写一个自己的邮箱就可以)
ssh-keygen -t rsa -C "[email protected]"
此时在C:/Users/用户名/.ssh/ 中生成了两个文件
pub结尾的文件为公钥,另一个文件为私钥,当我们吧自己的公钥信息放在对应服务器上就可以免密码访问服务器,实现免密码克隆版本库
3.服务器端打开Rsa认证
vi /etc/ssh/sshd_config
将以下三项的注释去掉
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
保存并重启sshd服务:
centos6命令
/etc/rc.d/init.d/sshd restart
centos7命令
systemctl restart sshd.service
由 AuthorizedKeysFile 得知公钥的存放路径是 .ssh/authorized_keys,实际上是 $Home/.ssh/authorized_keys,由于管理 Git 服务的用户是 git,所以实际存放公钥的路径是 /home/git/.ssh/authorized_keys
在/home/git/下创建目录/.ssh
mkdir -p /home/git/.ssh
修改.ssh文件夹的用户
chown -R git:git /home/git/.ssh
4.将客户端公钥导入服务器端
在客户端git bash中执行命令
ssh [email protected] 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
导入成功后回到服务器端查看是否已经将对应的公钥内容导入
vi /home/git/.ssh/authorized_keys
公钥是以邮箱地址结尾(上面添加的个人邮箱)
修改.ssh/的目录权限为700
修改authorized_keys的权限为600
chmod 700 /home/git/.ssh/
chmod 600 /home/git/.ssh/authorized_keys
再次在客户端尝试克隆
git clone [email protected]:/home/data/git/testgit.git
5.ssh端口不是默认端口的解决方法
有些公司内网服务器不能使用通用22端口,这样每次访问git还得额外多加端口信息。
解决方法: (以192.168.25.108 ssh端口为8822为例)
在C:/Users/用户名/.ssh/ 下新建一个config文件
文件内容
Host 192.168.25.108
Port 8822
这样命令不变也可以克隆仓库。
未完待续~
三. Git提交代码和冲突处理以及文件忽略,以eclipse为例
注:使用eclipse初始化本地版本库可能会打乱目录结构,尤其是maven之类的项目带父子工程的,很容易打乱目录结构,看着很不舒服,解决方法见第四节
今天使用eclipse插件提交到版本库,怎么也提交不上去,最后无奈使用命令提交,插件毕竟是插件,出现bug的时候试试命令行,提交方法见第四节
1.新建git项目
在eclipse中的项目右击>>Team>>share Project
右击项目
继续
提交后本地版本库已经同步,下面把本地代码推送到远程版本库
Team>>remote>>push
第一次提交推荐勾选Force Update
完成后会收到已经推送的提示
2.冲突解决
网上解决冲突的方法都差不多。下面是我的使用的心得:
个人经验:大部分情况下,如果你需要提交的不多,最快的解决冲突办法就是重新下载一个新的版本或者使用如下方法
方法:eclipse中选择冲突文件右击>>Team>>advanced>>AssumeUnchanged 这个选项的意思就是标记为未修改,也就是说这个文件在被标记了之后使用Pull命令后远程代码会覆盖本地代码,这个选项尽量只在单个文件使用。