Git 概念:
Git与SVN都是版本控制管理,不同之处,SVN是集中式管理,如果svn服务器宕机,整个基于svn的版本管理的开发将不能进行;git是分布式管理,在本地客户端有个版本库,服务端有个版本库,如果git服务器不在线,开发人员也可以基于本地版本库开发,到联线时再同步版本。
Svn常用操作:更新、提交
Git常用操作:抓取、拉取(相当于抓取+合并;相当于svn的更新)、提交(提交到本地版本库)、推送(相当于svn的提交)
客户端常用软件:sourcetree、tortoisegit
Git特色
Mac下开发ios,涉及到pbxproj合并问题,git有比较好的处理方式。
.gitattributes (版本控制合并文件操作) 文件内容
*.pbxproj text -crlf -diff -merge=union
.gitignore (版本控制忽略文件设置) 文件内容
*.xccheckout
*.xcuserstate
*.xcscheme
*.xcbkptlist
xcschememanagement.plist
Git服务端操作:
一、 用户组建立
建立用户:useradd git
设置用户密码:passwd git
建立用户:useradd test1
设置用户密码:passwd test1
用户组设置:usermod –g git test1
cd /home/git
mkdir prj
cd ..
sudo chmod –R 777 prj
二、在git版本库位置建立git仓库
1、初始化 git init 或git –bare init
2、设置忽略操作:
git config receive.denyCurrentBranchignore
3、该操作可选 (git文件模式)
git configcore.filemode true
gitconfig core.filemode false
4、文件权限问题(没有深入研究)
由于git配置采用ssh模式,会涉及到ssh相应的权限验证,和linux系统的用户组权限控制
遇到该类问题
常采用以下命令处理
sudo chmod g+w -R .git/objects
sudo chmod g+w -R objects
sudo chmod g+w -R .git/logs
sudo chmod g+w -R logs
可以采用以下设置解决文件权限问题,文件权限由git管理,该设置为对组内成员共享
git configcore.sharedRepository group
5、git版本控制的分支合并问题没有深入研究
6、特殊场景,比如git服务器装在虚拟机里,涉及到服务器ip地址变更问题
修改ip地址使用如下命令:
cd /etc/sysconfig/network-scripts/
vi ifctg-eth0
DEVICE=eth0
HWADDR=00:0C:29:1C:96:AD
TYPE=Ethernet
UUID=6c24deea-f920-4f86-bc5e-9f57bd972403
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.90.235
NETMASK=255.255.255.0
GATEWAY=192.168.90.1
DNS1=192.168.90.1
DEFROUTE=yes
service network restart
service iptables stop