此文是本菜鸡在实践屡次git搭建内网服务版本库和GitHub上的使用总结
部分参考了这位大佬的博客https://www.cnblogs.com/dee09...
另外推荐廖雪峰大佬的git博客html
进入正题git
注意注意,下面的方法是常规的git服务器搭建过程,其实彻底可使用gitlab之类的开源软件搭建git服务器,下面这种方式其实比较鸡肋,gitlab就至关于本身搭建github,值得一试~github
前提是服务器配置稍好,gitlab运行占用大约4G内存centos
个人服务器是Centos7 因此使用yum命令安装bash
yum install -y git
上面必须保证服务器可联网
安装完成后使用命令查看git版本服务器
git --version
显示版本即视为安装成功eclipse
地址https://git-scm.com/download/win
一直默认安装就能够,右击鼠标能够出现git bush选项即视为安装成功ssh
注:这个用户是用来作版本库全部者的区分的,不是做为上传代码的用户的,只须要一个就能够了。
执行命令
添加名为git的用户maven
useradd git
为用户git 设置密码gitlab
passwd 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仓库搭建。
完成仓库搭建后便可链接远程仓库
链接须要服务器主机ip,个人是192.168.25.108,下面将服务器远程仓库克隆到本地。
git clone git@192.168.25.108:/home/data/git/testgit.git
获得以下界面
输入yes 回车,提示输入密码,无视继续回车走起
结束后会在电脑 C:/Users/用户名/.ssh/ 中生成一个文件known_hosts 这个文件会保存全部链接过的ip信息,下一次链接这个IP就不会有上面的提示了。
使用文本编辑文件能够看到咱们的ip信息
此时咱们就能够将远程git仓库的代码克隆到本地了。
再次执行
git clone git@192.168.25.108:/home/data/git/testgit.git
输入上面设置的git用户的密码便可将远程代码克隆到本地
通常状况下咱们为了提交代码快捷简便都会采用SSH免密登陆的方式来访问远程仓库,这样就不会频繁的输入密码
客户端建立SSH公钥私钥,在git bash中执行(下面的邮箱地址随意填写一个本身的邮箱就能够)
ssh-keygen -t rsa -C "example@email.com"
此时在C:/Users/用户名/.ssh/ 中生成了两个文件
pub结尾的文件为公钥,另外一个文件为私钥,当咱们吧本身的公钥信息放在对应服务器上就能够免密码访问服务器,实现免密码克隆版本库
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
在客户端git bash中执行命令
ssh git@192.168.25.108 '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 git@192.168.25.108:/home/data/git/testgit.git
有些公司内网服务器不能使用通用22端口,这样每次访问git还得额外多加端口信息。
解决方法: (以192.168.25.108 ssh端口为8822为例)
在C:/Users/用户名/.ssh/ 下新建一个config文件
文件内容
Host 192.168.25.108 Port 8822
这样命令不变也能够克隆仓库。
未完待续~
注:使用eclipse初始化本地版本库可能会打乱目录结构,尤为是maven之类的项目带父子工程的,很容易打乱目录结构,看着很不舒服,解决方法见第四节
今天使用eclipse插件提交到版本库,怎么也提交不上去,最后无奈使用命令提交,插件毕竟是插件,出现bug的时候试试命令行,提交方法见第四节
在eclipse中的项目右击>>Team>>share Project
点击finish完成本地版本库的建立
右击项目
继续
提交后本地版本库已经同步,下面把本地代码推送到远程版本库
Team>>remote>>push
第一次提交推荐勾选Force Update
完成后会收到已经推送的提示
网上解决冲突的方法都差很少。下面是个人使用的心得:
方法:eclipse中选择冲突文件右击>>Team>>advanced>>AssumeUnchanged 这个选项的意思就是标记为未修改,也就是说这个文件在被标记了以后使用Pull命令后远程代码会覆盖本地代码,这个选项尽可能只在单个文件使用。