代码管理平台
代码管理平台介绍
安装svn
1.svn是cs架构,所以我们需要安装一个服务端
[root@centos-01 ~]# yum install -y subversion
2.创建版本库(我们的项目代码放置的地方),并用svnadmin命令初始化一些文件
[root@centos-01 ~]# mkdir -p /data/svnroot/myproject [root@centos-01 ~]# svnadmin create /data/svnroot/myproject/ [root@centos-01 ~]# ls -la !$ ls -la /data/svnroot/myproject/ 总用量 8 drwxr-xr-x 6 root root 86 4月 26 06:32 . drwxr-xr-x 3 root root 23 4月 26 06:31 .. drwxr-xr-x 2 root root 54 4月 26 06:32 conf drwxr-sr-x 6 root root 233 4月 26 06:32 db -r--r--r-- 1 root root 2 4月 26 06:32 format drwxr-xr-x 2 root root 231 4月 26 06:32 hooks drwxr-xr-x 2 root root 41 4月 26 06:32 locks -rw-r--r-- 1 root root 229 4月 26 06:32 README.txt [root@centos-01 ~]#
3.进入conf文件有三个文件authz是控制权限的,passwd是密码文件,svnserve.conf是仓库的配置文件
[root@centos-01 ~]# cd !$/conf cd /data/svnroot/myproject//conf [root@centos-01 conf]# ls authz passwd svnserve.conf [root@centos-01 conf]#
4.编辑authz文件,在组中添加一个admins组加两个用户user1,user2
[groups] # harry_and_sally = harry,sally # harry_sally_and_joe = harry,sally,&joe admins = user1,user2 (admin组有两个用户user1,user2) [/](指的是/data/svnroot/myproject/目录) @admins = rw(admins组下的用户有读写权限) * = r (其他所有用户有读权限)
[myproject:/](另外一种写法,myproject是项目名) user1 = rw(user1是读写)
5.创建用户和密码
[root@centos-01 conf]# vim passwd [root@centos-01 conf]# [users] # harry = harryssecret # sally = sallyssecret user1 = user1 user2 = user2
6.编辑配置文件
[root@centos-01 conf]# vim svnserve.conf [root@centos-01 conf]# [general] anon-access = none (匿名用户没有任何权限) auth-access = write (被授权的用户有写的权限) password-db = passwd (用户的密码文件) authz-db = authz (权限控制文件) realm = /data/svnroot/myproject (对哪一个项目生效)
7.启动svn(-d是后台模式启动)
[root@centos-01 conf]# svnserve -d -r /data/svnroot/ [root@centos-01 conf]#
[root@centos-01 conf]# ps aux|grep svn
root 4100 0.0 0.1 197136 1024 ? Ss 07:04 0:00 svnserve -d -r /data/svnroot/
root 4102 0.0 0.0 112664 932 pts/0 S+ 07:05 0:00 grep --color=auto svn
[root@centos-01 conf]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 4100/svnserve
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1840/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1089/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 984/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1624/master
tcp 0 0 192.168.133.44:27017 0.0.0.0:* LISTEN 1504/mongod
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 1504/mongod
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::22 :::* LISTEN 1089/sshd
tcp6 0 0 ::1:631 :::* LISTEN 984/cupsd
tcp6 0 0 ::1:25 :::* LISTEN 1624/master
[root@centos-01 conf]#
8.清掉防火墙规则
[root@centos-01 conf]# iptables -F [root@centos-01 conf]# iptables -nvL Chain INPUT (policy ACCEPT 9 packets, 692 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 10 packets, 924 bytes) pkts bytes target prot opt in out source destination [root@centos-01 conf]#
客户端上使用svn(linux)
1.在本机使用svn
[root@centos-01 conf]# cd /home/ [root@centos-01 home]# mkdir svntest [root@centos-01 home]# cd svntest/ [root@centos-01 svntest]# ls [root@centos-01 svntest]# svn checkout svn://192.168.133.44/myproject --username=user1 认证领域: <svn://192.168.133.44:3690> /data/svnroot/myproject “user1”的密码: ----------------------------------------------------------------------- 注意! 你的密码,对于认证域: <svn://192.168.133.44:3690> /data/svnroot/myproject 只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让 Subversion 可以保存加密后的密码。请参阅文档以获得详细信息。 你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”, 来避免再次出现此警告。 ----------------------------------------------------------------------- 保存未加密的密码(yes/no)?yes 取出版本 0。 [root@centos-01 svntest]# ls myproject [root@centos-01 svntest]# ls -la myproject/ 总用量 0 drwxr-xr-x 3 root root 18 4月 26 07:17 . drwxr-xr-x 3 root root 23 4月 26 07:17 .. drwxr-xr-x 4 root root 75 4月 26 07:17 .svn [root@centos-01 svntest]#
2.在另外一台机器使用svn(如果没有安装svn需要用yum安装)
[root@centos-02 ~]# cd /home/ [root@centos-02 home]# ls elastic sunyujun sunyujun1 user1 user2 [root@centos-02 home]# svn checkout svn: E205001: 请使用 “svn help” 以得到更多信息 svn: E205001: 没有提供足够的参数 [root@centos-02 home]# svn checkout svn://192.168.133.44/myproject --username=user1 认证领域: <svn://192.168.133.44:3690> /data/svnroot/myproject “user1”的密码: 认证领域: <svn://192.168.133.44:3690> /data/svnroot/myproject 用户名: user1 “user1”的密码: ----------------------------------------------------------------------- 注意! 你的密码,对于认证域: <svn://192.168.133.44:3690> /data/svnroot/myproject 只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让 Subversion 可以保存加密后的密码。请参阅文档以获得详细信息。 你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”, 来避免再次出现此警告。 ----------------------------------------------------------------------- 保存未加密的密码(yes/no)?yes A myproject/123.txt 取出版本 1。 [root@centos-02 home]#
3.客户端上添加666.txt文件并svn提交
[root@centos-02 home]# ls elastic myproject sunyujun sunyujun1 user1 user2 [root@centos-02 home]# cd myproject/ [root@centos-02 myproject]# ls 123.txt [root@centos-02 myproject]# touch 666.txt [root@centos-02 myproject]# ls 123.txt 666.txt [root@centos-02 myproject]# svn add 666.txt A 666.txt [root@centos-02 myproject]# svn commit -m "add 666.txt" 正在增加 666.txt 传输文件数据. 提交后的版本为 2。 [root@centos-02 myproject]#
4.服务端更新
[root@centos-01 myproject]# ls 123.txt [root@centos-01 myproject]# svn up 正在升级 '.': A 666.txt 更新到版本 2。 [root@centos-01 myproject]#
5.我们第二次不用再输入密码了是因为系统已经记录了我们的密码
[root@centos-01 svn.simple]# pwd /root/.subversion/auth/svn.simple [root@centos-01 svn.simple]# cat 4b291284476d572783808d129e4feb70 K 8 passtype V 6 simple K 8 password V 5 user1 K 15 svn:realmstring V 51 <svn://192.168.133.44:3690> /data/svnroot/myproject K 8 username V 5 user1 END [root@centos-01 svn.simple]#
6.修改文件内容并提交到svn,服务端更新
[root@centos-02 myproject]# ls 123.txt 666.txt [root@centos-02 myproject]# vim 666.txt [root@centos-02 myproject]# cat 666.txt 1111111 [root@centos-02 myproject]#
[root@centos-02 myproject]# svn commit -m "ch 666.txt"
正在发送 666.txt
传输文件数据.
提交后的版本为 3。
[root@centos-02 myproject]#
[root@centos-01 myproject]# ls 123.txt 666.txt [root@centos-01 myproject]# svn up 正在升级 '.': U 666.txt 更新到版本 3。 [root@centos-01 myproject]# cat 666.txt 1111111 [root@centos-01 myproject]#
7.svn删除文件
[root@centos-01 myproject]# ls 123.txt 666.txt [root@centos-01 myproject]# svn delete 123.txt D 123.txt [root@centos-01 myproject]# svn commit -m "delete 123.txt" 正在删除 123.txt 提交后的版本为 4。 [root@centos-01 myproject]# [root@centos-02 myproject]# svn up 正在升级 '.': D 123.txt 更新到版本 4。 [root@centos-02 myproject]#
8.查看日志
[root@centos-02 myproject]# svn log ------------------------------------------------------------------------ r4 | user1 | 2018-04-26 08:00:13 +0800 (四, 2018-04-26) | 1 行 delete 123.txt ------------------------------------------------------------------------ r3 | user1 | 2018-04-26 07:55:22 +0800 (四, 2018-04-26) | 1 行 ch 666.txt ------------------------------------------------------------------------ r2 | user1 | 2018-04-26 07:42:55 +0800 (四, 2018-04-26) | 1 行 add 666.txt ------------------------------------------------------------------------ r1 | user1 | 2018-04-26 07:26:25 +0800 (四, 2018-04-26) | 1 行 add 123.txt ------------------------------------------------------------------------ [root@centos-02 myproject]#
客户端上使用svn(windows)
https://tortoisesvn.net/index.zh.html
1.svn checkout
单机上使用git(上)
1.git是分布式的,不依赖网络,我在我的电脑上使用git,你在你的电脑上使用git互不影响,不需要把代码更新到服务端上去。
2.安装git
[root@centos-01 ~]# yum install -y git [root@centos-01 ~]# mkdir /data/gitroot [root@centos-01 ~]# cd /data/gitroot/ [root@centos-01 gitroot]# ls [root@centos-01 gitroot]# git init (初始化仓库,svn初始化仓库用svnadmin) 初始化空的 Git 版本库于 /data/gitroot/.git/ [root@centos-01 gitroot]# ls -la 总用量 0 drwxr-xr-x 3 root root 18 4月 26 23:19 . drwxr-xr-x 5 root root 51 4月 26 23:18 .. drwxr-xr-x 7 root root 119 4月 26 23:19 .git [root@centos-01 gitroot]#
[root@centos-01 gitroot]# ls .git/ branches config description HEAD hooks info objects refs [root@centos-01 gitroot]# vim 1.txt [root@centos-01 gitroot]# cat 1.txt aaaaaaaaaaaaaa [root@centos-01 gitroot]# git add 1.txt [root@centos-01 gitroot]# git commit -m "add 1.txt" *** Please tell me who you are. Run git config --global user.email "you@example.com" git config --global user.name "Your Name" to set your account's default identity. Omit --global to set the identity only in this repository. fatal: unable to auto-detect email address (got 'root@centos-01.(none)') [root@centos-01 gitroot]# git config --global user.email "278108678@qq.com" [root@centos-01 gitroot]# git config --global "phper" error: key does not contain a section: phper [root@centos-01 gitroot]# git config --global user.name "phper" [root@centos-01 gitroot]# git commit -m "add 1.txt" [master(根提交) 178684e] add 1.txt 1 file changed, 1 insertion(+) create mode 100644 1.txt [root@centos-01 gitroot]# vim 1.txt [root@centos-01 gitroot]# cat 1.txt aaaaaaaaaaaaaa bbbbbbbbbbbbbb [root@centos-01 gitroot]# git add 1.txt [root@centos-01 gitroot]# git commit -m "add 1.txt" [master 173e740] add 1.txt 1 file changed, 1 insertion(+) [root@centos-01 gitroot]# git commit -m "add 1.txt agin" # 位于分支 master 无文件要提交,干净的工作区 [root@centos-01 gitroot]# git status # 位于分支 master 无文件要提交,干净的工作区 [root@centos-01 gitroot]# vim 1.txt [root@centos-01 gitroot]# git status # 位于分支 master # 尚未暂存以备提交的变更: # (使用 "git add <file>..." 更新要提交的内容) # (使用 "git checkout -- <file>..." 丢弃工作区的改动) # # 修改: 1.txt # 修改尚未加入提交(使用 "git add" 和/或 "git commit -a") [root@centos-01 gitroot]# git diff 1.txt diff --git a/1.txt b/1.txt index 88cd09c..387c6e1 100644 --- a/1.txt +++ b/1.txt @@ -1,2 +1,3 @@ aaaaaaaaaaaaaa bbbbbbbbbbbbbb +cccccccccccccc [root@centos-01 gitroot]#
[root@centos-01 gitroot]# git add 1.txt [root@centos-01 gitroot]# git commit -m "add 1.txt agin" [master 8cc5c90] add 1.txt agin 1 file changed, 1 insertion(+) [root@centos-01 gitroot]# vim 1.txt [root@centos-01 gitroot]# cat 1.txt aaaaaaaaaaaaaa bbbbbbbbbbbbbb cccccccccccccc dddddddddddddd [root@centos-01 gitroot]# git add 1.txt; git commit -m "ch 1.txt agin" [master 892a682] ch 1.txt agin 1 file changed, 1 insertion(+) [root@centos-01 gitroot]# git log commit 892a682ff335c779233b60e58d023e97ea6f0f7b Author: phper <278108678@qq.com> Date: Thu Apr 26 23:40:39 2018 +0800 ch 1.txt agin commit 8cc5c9023033d1aedc9b01698437cddeef9bc504 Author: phper <278108678@qq.com> Date: Thu Apr 26 23:39:31 2018 +0800 add 1.txt agin commit 173e740090f5b7b5bf79169a7eb2e5de6a150f23 Author: phper <278108678@qq.com> Date: Thu Apr 26 23:26:47 2018 +0800 add 1.txt commit 178684eb053088a2db6879c0b1b1df805816cf6c Author: phper <278108678@qq.com> Date: Thu Apr 26 23:25:27 2018 +0800 [root@centos-01 gitroot]# cat /root/.gitconfig [user] email = 278108678@qq.com name = phper [root@centos-01 gitroot]#
1.回退到之前的某个版本
[root@centos-01 gitroot]# git log --pretty=oneline 892a682ff335c779233b60e58d023e97ea6f0f7b ch 1.txt agin 8cc5c9023033d1aedc9b01698437cddeef9bc504 add 1.txt agin 173e740090f5b7b5bf79169a7eb2e5de6a150f23 add 1.txt 178684eb053088a2db6879c0b1b1df805816cf6c add 1.txt [root@centos-01 gitroot]# git reset --hard 173e740090f5 HEAD 现在位于 173e740 add 1.txt [root@centos-01 gitroot]# git log --pretty=oneline 173e740090f5b7b5bf79169a7eb2e5de6a150f23 add 1.txt 178684eb053088a2db6879c0b1b1df805816cf6c add 1.txt [root@centos-01 gitroot]# git reflog 173e740 HEAD@{0}: reset: moving to 173e740090f5 892a682 HEAD@{1}: commit: ch 1.txt agin 8cc5c90 HEAD@{2}: commit: add 1.txt agin 173e740 HEAD@{3}: commit: add 1.txt 178684e HEAD@{4}: commit (initial): add 1.txt [root@centos-01 gitroot]# git reset --hard 892a682 HEAD 现在位于 892a682 ch 1.txt agin [root@centos-01 gitroot]# git log --pretty=oneline 892a682ff335c779233b60e58d023e97ea6f0f7b ch 1.txt agin 8cc5c9023033d1aedc9b01698437cddeef9bc504 add 1.txt agin 173e740090f5b7b5bf79169a7eb2e5de6a150f23 add 1.txt 178684eb053088a2db6879c0b1b1df805816cf6c add 1.txt [root@centos-01 gitroot]#
2.不小心删了文件
[root@centos-01 gitroot]# ls 1.txt [root@centos-01 gitroot]# rm -f 1.txt [root@centos-01 gitroot]# ls [root@centos-01 gitroot]# git checkout -- 1.txt [root@centos-01 gitroot]# ls 1.txt [root@centos-01 gitroot]# vim 1.txt [root@centos-01 gitroot]# cat 1.txt aaaaaaaaaaaaaa bbbbbbbbbbbbbb cccccccccccccc dddddddddddddd eeeeeeeeeeeeee [root@centos-01 gitroot]# git add 1.txt [root@centos-01 gitroot]# git reset HEAD 1.txt (将上面add的标记去掉) 重置后撤出暂存区的变更: M 1.txt [root@centos-01 gitroot]#git checkout -- 1.txt(将代码库里面最新的文件搞回来)
3.删除文件
[root@centos-01 gitroot]# git rm 1.txt error: '1.txt' 有本地修改 (使用 --cached 保存文件,或用 -f 强制删除) [root@centos-01 gitroot]# [root@centos-01 gitroot]# vim 1.txt [root@centos-01 gitroot]# git checkout -- 1.txt [root@centos-01 gitroot]# cat 1.txt aaaaaaaaaaaaaa bbbbbbbbbbbbbb cccccccccccccc dddddddddddddd [root@centos-01 gitroot]# git rm 1.txt rm '1.txt' [root@centos-01 gitroot]# git commit -m "delete 1.txt" [master eb733c2] delete 1.txt 1 file changed, 4 deletions(-) delete mode 100644 1.txt [root@centos-01 gitroot]# git checkout -- 1.txt error: pathspec '1.txt' did not match any file(s) known to git. [root@centos-01 gitroot]# git log --pretty=oneline eb733c21800a28909e478756464ccc59ebab23dc delete 1.txt 892a682ff335c779233b60e58d023e97ea6f0f7b ch 1.txt agin 8cc5c9023033d1aedc9b01698437cddeef9bc504 add 1.txt agin 173e740090f5b7b5bf79169a7eb2e5de6a150f23 add 1.txt 178684eb053088a2db6879c0b1b1df805816cf6c add 1.txt [root@centos-01 gitroot]# git reset --hard 892a682ff335c HEAD 现在位于 892a682 ch 1.txt agin [root@centos-01 gitroot]# ls 1.txt [root@centos-01 gitroot]# cat 1.txt aaaaaaaaaaaaaa bbbbbbbbbbbbbb cccccccccccccc dddddddddddddd [root@centos-01 gitroot]#
建立远程仓库
1.到github上注册一个账号,sign up注册一个账号,注册完成之后点击sign in登录,登录之后新建仓库。
2.点击创建仓库
3.创建秘钥,点击头像下面的setting
4.在客户端生成公钥放到github上去
[root@centos-01 ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 7a:0a:cb:9e:c0:5f:6b:1b:33:db:95:35:9b:43:6a:10 root@centos-01 The key's randomart image is: +--[ RSA 2048]----+ | | | | | E | | . | | S + | | . . . = + | | o . * . = + | | + =.X o . | | .*.=.. | +-----------------+ [root@centos-01 ~]# cat .ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBTj3AjVScW1LoWdcbJLLwhgNcemhko3PMu8Sze9QePkvvCi49seQrcet9Yp9zxAVovs74tWHQPmfJ3h2OMx3GDk36b14O+8WpbKnZV/pN0PUX1ZvVVfw7v8t22SDHYm09jHHbzQJdiMK2T
J89RcKmE8d8D2Z9igInhdK2BEaGp4JYVQZdhchM58JcE+rvPcdsDhEhsA+z88UejWBGMZpJo1T8OCaK0OKPqKR7ZRt1kSlG78CDuHoldDu9HaKMm5ED/JxguC8EyIOLnnHTa/3kutMIEdK4ZOowlAEsgVmrKizMa7JvDOHhl5ycoaL8DD/rdh
aLquXX+8bRcgqXl385 root@centos-01 [root@centos-01 ~]#
5.git推送文件到github
[root@centos-01 tmp]# cd /tmp/ [root@centos-01 tmp]# mkdir linuxlearn [root@centos-01 tmp]# cd linuxlearn/ [root@centos-01 linuxlearn]# echo "# linuxlearn" >> README.md [root@centos-01 linuxlearn]# git init 初始化空的 Git 版本库于 /tmp/linuxlearn/.git/ [root@centos-01 linuxlearn]# ls -la 总用量 8 drwxr-xr-x 3 root root 35 5月 5 16:26 . drwxrwxrwt. 19 root root 4096 5月 5 16:25 .. drwxr-xr-x 7 root root 119 5月 5 16:26 .git -rw-r--r-- 1 root root 13 5月 5 16:25 README.md [root@centos-01 linuxlearn]# git add README.md [root@centos-01 linuxlearn]# git commit -m "fldsjfds" [master(根提交) a08b6ef] fldsjfds 1 file changed, 1 insertion(+) create mode 100644 README.md [root@centos-01 linuxlearn]# git remote add origin https://github.com/sunyujun/linuxlearn.git
6.验证发现推送成功
7.再次推送文件测试
[root@centos-01 ~]# cd /tmp/linuxlearn/ [root@centos-01 linuxlearn]# ls README.md [root@centos-01 linuxlearn]# vim 2.txt [root@centos-01 linuxlearn]# cat 2.txt 111111111111111111 [root@centos-01 linuxlearn]# git add 2.txt [root@centos-01 linuxlearn]# git commit -m "add 2.txt" [master 21c6941] add 2.txt 1 file changed, 1 insertion(+) create mode 100644 2.txt [root@centos-01 linuxlearn]# git push warning: push.default 未设置,它的默认值将会在 Git 2.0 由 'matching' 修改为 'simple'。若要不再显示本信息并在其默认值改变后维持当前使用习惯, 进行如下设置: git config --global push.default matching 若要不再显示本信息并从现在开始采用新的使用习惯,设置: git config --global push.default simple 参见 'git help config' 并查找 'push.default' 以获取更多信息。 ('simple' 模式由 Git 1.7.11 版本引入。如果您有时要使用老版本的 Git, 为保持兼容,请用 'current' 代替 'simple' 模式) Username for 'https://github.com': sunyujun Password for 'https://sunyujun@github.com': Counting objects: 4, done. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 267 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To https://github.com/sunyujun/linuxlearn.git a08b6ef..21c6941 master -> master [root@centos-01 linuxlearn]#
8.成功
克隆远程仓库
1.克隆远程的项目
[root@centos-01 linuxlearn]# cd /home/ [root@centos-01 home]# ls sunyujun svntest user1 user2 [root@centos-01 home]# git clone git@github.com:aminglinux/lanmp.git 正克隆到 'lanmp'... The authenticity of host 'github.com (13.229.188.59)' can't be established. RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'github.com,13.229.188.59' (RSA) to the list of known hosts. remote: Counting objects: 32, done. 接收对象中: 100% (32/32), 5.99 KiB | 0 bytes/s, done. remote: Total 32 (delta 0), reused 0 (delta 0), pack-reused 32 处理 delta 中: 100% (6/6), done. [root@centos-01 home]# ls lanmp sunyujun svntest user1 user2 [root@centos-01 home]# cd lanmp/ [root@centos-01 lanmp]# ls lanmp.sh README.md [root@centos-01 lanmp]#
[root@centos-01 lanmp]# cat lanmp.sh #!/bin/bash ## written by aming. ## 2015-06-24. #######Begin######## echo "It will install lamp or lnmp." sleep 1 ##check last command is OK or not. check_ok() { if [ $? != 0 ] then echo "Error, Check the error log." exit 1 fi } ##get the archive of the system,i686 or x86_64. ar=`arch` ##close seliux sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config selinux_s=`getenforce` if [ $selinux_s == "enforcing" ] then setenforce 0 fi ##close iptables iptables-save > /etc/sysconfig/iptables_`date +%s` iptables -F service iptables save ##if the packge installed ,then omit. myum() { if ! rpm -qa|grep -q "^$1" then yum install -y $1 check_ok else echo $1 already installed. fi } ## install some packges. for p in gcc wget perl perl-devel libaio libaio-devel pcre-devel zlib-devel do myum $p done ##install epel. if rpm -qa epel-release >/dev/null then rpm -e epel-release fi if ls /etc/yum.repos.d/epel-6.repo* >/dev/null 2>&1 then rm -f /etc/yum.repos.d/epel-6.repo* fi wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-6.repo ##function of installing mysqld. install_mysqld() { case $mysql_v in 5.1) cd /usr/local/src [ -f mysql-5.1.72-linux-$ar-glibc23.tar.gz ] || wget http://mirrors.sohu.com/mysql/MySQL-5.1/mysql-5.1.72-linux-$ar-glibc23.tar.gz tar zxf mysql-5.1.72-linux-$ar-glibc23.tar.gz check_ok [ -d /usr/local/mysql ] && /bin/mv /usr/local/mysql /usr/local/mysql_`date +%s` mv mysql-5.1.72-linux-$ar-glibc23 /usr/local/mysql check_ok if ! grep '^mysql:' /etc/passwd then useradd -M mysql -s /sbin/nologin check_ok fi myum compat-libstdc++-33 [ -d /data/mysql ] && /bin/mv /data/mysql /data/mysql_`date +%s` mkdir -p /data/mysql chown -R mysql:mysql /data/mysql cd /usr/local/mysql ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql check_ok /bin/cp support-files/my-huge.cnf /etc/my.cnf check_ok sed -i '/^\[mysqld\]$/a\datadir = /data/mysql' /etc/my.cnf /bin/cp support-files/mysql.server /etc/init.d/mysqld sed -i 's#^datadir=#datadir=/data/mysql#' /etc/init.d/mysqld chmod 755 /etc/init.d/mysqld chkconfig --add mysqld chkconfig mysqld on service mysqld start check_ok break ;; 5.6) cd /usr/local/src [ -f mysql-5.6.26-linux-glibc2.5-$ar.tar.gz ] || wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.26-linux-glibc2.5-$ar.tar.gz tar zxf mysql-5.6.26-linux-glibc2.5-$ar.tar.gz check_ok [ -d /usr/local/mysql ] && /bin/mv /usr/local/mysql /usr/local/mysql_bak mv mysql-5.6.26-linux-glibc2.5-$ar /usr/local/mysql if ! grep '^mysql:' /etc/passwd then useradd -M mysql -s /sbin/nologin fi myum compat-libstdc++-33 [ -d /data/mysql ] && /bin/mv /data/mysql /data/mysql_bak mkdir -p /data/mysql chown -R mysql:mysql /data/mysql cd /usr/local/mysql ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql check_ok /bin/cp support-files/my-default.cnf /etc/my.cnf check_ok sed -i '/^\[mysqld\]$/a\datadir = /data/mysql' /etc/my.cnf /bin/cp support-files/mysql.server /etc/init.d/mysqld sed -i 's#^datadir=#datadir=/data/mysql#' /etc/init.d/mysqld chmod 755 /etc/init.d/mysqld chkconfig --add mysqld chkconfig mysqld on service mysqld start check_ok break ;; *) echo "only 1(5.1) or 2(5.6)" exit 1 ;; esac } ##function of install httpd. install_httpd() { echo "Install apache version 2.2." cd /usr/local/src [ -f httpd-2.2.16.tar.gz ] || wget http://syslab.comsenz.com/downloads/linux/httpd-2.2.16.tar.gz tar zxf httpd-2.2.16.tar.gz && cd httpd-2.2.16 check_ok ./configure \ --prefix=/usr/local/apache2 \ --with-included-apr \ --enable-so \ --enable-deflate=shared \ --enable-expires=shared \ --enable-rewrite=shared \ --with-pcre check_ok make && make install check_ok } ##function of install lamp's php. install_php() { echo -e "Install php.\nPlease chose the version of php." case $php_v in 5.4) cd /usr/local/src/ [ -f php-5.4.45.tar.bz2 ] || wget 'http://cn2.php.net/get/php-5.4.45.tar.bz2/from/this/mirror' -O php-5.4.45.tar.bz2 tar jxf php-5.4.45.tar.bz2 && cd php-5.4.45 for p in openssl-devel bzip2-devel \ libxml2-devel curl-devel libpng-devel \ libjpeg-devel freetype-devel libmcrypt-devel\ libtool-ltdl-devel perl-devel do myum $p done check_ok ./configure \ --prefix=/usr/local/php \ --with-apxs2=/usr/local/apache2/bin/apxs \ --with-config-file-path=/usr/local/php/etc \ --with-mysql=/usr/local/mysql \ --with-libxml-dir \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-freetype-dir \ --with-iconv-dir \ --with-zlib-dir \ --with-bz2 \ --with-openssl \ --with-mcrypt \ --enable-soap \ --enable-gd-native-ttf \ --enable-mbstring \ --enable-sockets \ --enable-exif \ --disable-ipv6 check_ok make && make install check_ok [ -f /usr/local/php/etc/php.ini ] || /bin/cp php.ini-production /usr/local/php/etc/php.ini break ;; 5.6) cd /usr/local/src/ [ -f php-5.6.6.tar.gz ] || wget http://mirrors.sohu.com/php/php-5.6.6.tar.gz tar zxf php-5.6.6.tar.gz && cd php-5.6.6 for p in openssl-devel bzip2-devel \ libxml2-devel curl-devel libpng-devel \ libjpeg-devel freetype-devel libmcrypt-devel\ libtool-ltdl-devel perl-devel do myum $p done ./configure \ --prefix=/usr/local/php \ --with-apxs2=/usr/local/apache2/bin/apxs \ --with-config-file-path=/usr/local/php/etc \ --with-mysql=/usr/local/mysql \ --with-libxml-dir \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-freetype-dir \ --with-iconv-dir \ --with-zlib-dir \ --with-bz2 \ --with-openssl \ --with-mcrypt \ --enable-soap \ --enable-gd-native-ttf \ --enable-mbstring \ --enable-sockets \ --enable-exif \ --disable-ipv6 check_ok make && make install check_ok [ -f /usr/local/php/etc/php.ini ] || /bin/cp php.ini-production /usr/local/php/etc/php.ini break ;; *) echo "only 1(5.4) or 2(5.6)" ;; esac } ##function of apache and php configue. join_apa_php() { sed -i '/AddType .*.gz .tgz$/a\AddType application\/x-httpd-php .php' /usr/local/apache2/conf/httpd.conf check_ok sed -i 's/DirectoryIndex index.html/DirectoryIndex index.php index.html index.htm/' /usr/local/apache2/conf/httpd.conf check_ok cat > /usr/local/apache2/htdocs/index.php <<EOF <?php phpinfo(); ?> EOF if /usr/local/php/bin/php -i |grep -iq 'date.timezone => no value' then sed -i '/;date.timezone =$/a\date.timezone = "Asia\/Chongqing"' /usr/local/php/etc/php.ini fi /usr/local/apache2/bin/apachectl restart check_ok } ##function of check service is running or not, example nginx, httpd, php-fpm. check_service() { if [ "$1" == "phpfpm" ] then s="php-fpm" else s=$1 fi n=`ps aux |grep "$s"|wc -l` if [ $n -gt 1 ] then echo "$1 service is already started." else if [ -f /etc/init.d/$1 ] then /etc/init.d/$1 start check_ok else install_$1 fi fi } ##function of install lamp lamp() { check_service mysqld check_service httpd install_php join_apa_php echo "LAMP done,Please use 'http://your ip/index.php' to access." } ##function of install nginx install_nginx() { cd /usr/local/src [ -f nginx-1.8.0.tar.gz ] || wget http://nginx.org/download/nginx-1.8.0.tar.gz tar zxf nginx-1.8.0.tar.gz cd nginx-1.8.0 myum pcre-devel ./configure --prefix=/usr/local/nginx check_ok make && make install check_ok if [ -f /etc/init.d/nginx ] then /bin/mv /etc/init.d/nginx /etc/init.d/nginx_`date +%s` fi curl http://www.apelearn.com/study_v2/.nginx_init -o /etc/init.d/nginx check_ok chmod 755 /etc/init.d/nginx chkconfig --add nginx chkconfig nginx on curl http://www.apelearn.com/study_v2/.nginx_conf -o /usr/local/nginx/conf/nginx.conf check_ok service nginx start check_ok echo -e "<?php\n phpinfo();\n?>" > /usr/local/nginx/html/index.php check_ok } ##function of install php-fpm install_phpfpm() { echo -e "Install php.\nPlease chose the version of php." case $php_v in 5.4) cd /usr/local/src/ [ -f php-5.4.45.tar.bz2 ] || wget 'http://cn2.php.net/get/php-5.4.45.tar.bz2/from/this/mirror' -O php-5.4.45.tar.bz2 tar jxf php-5.4.45.tar.bz2 && cd php-5.4.45 for p in openssl-devel bzip2-devel \ libxml2-devel curl-devel libpng-devel \ libjpeg-devel freetype-devel libmcrypt-devel\ libtool-ltdl-devel perl-devel do myum $p done if ! grep -q '^php-fpm:' /etc/passwd then useradd -M -s /sbin/nologin php-fpm check_ok fi ./configure \ --prefix=/usr/local/php-fpm \ --with-config-file-path=/usr/local/php-fpm/etc \ --enable-fpm \ --with-fpm-user=php-fpm \ --with-fpm-group=php-fpm \ --with-mysql=/usr/local/mysql \ --with-mysql-sock=/tmp/mysql.sock \ --with-libxml-dir \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-freetype-dir \ --with-iconv-dir \ --with-zlib-dir \ --with-mcrypt \ --enable-soap \ --enable-gd-native-ttf \ --enable-ftp \ --enable-mbstring \ --enable-exif \ --enable-zend-multibyte \ --disable-ipv6 \ --with-pear \ --with-curl \ --with-openssl check_ok make && make install check_ok [ -f /usr/local/php-fpm/etc/php.ini ] || /bin/cp php.ini-production /usr/local/php-fpm/etc/php.ini if /usr/local/php-fpm/bin/php -i |grep -iq 'date.timezone => no value' then sed -i '/;date.timezone =$/a\date.timezone = "Asia\/Chongqing"' /usr/local/php-fpm/etc/php.ini check_ok fi [ -f /usr/local/php-fpm/etc/php-fpm.conf ] || curl http://www.apelearn.com/study_v2/.phpfpm_conf -o /usr/local/php-fpm/etc/php-fpm.conf [ -f /etc/init.d/phpfpm ] || /bin/cp sapi/fpm/init.d.php-fpm /etc/init.d/phpfpm chmod 755 /etc/init.d/phpfpm chkconfig phpfpm on service phpfpm start check_ok break ;; 5.6) cd /usr/local/src/ [ -f php-5.6.6.tar.gz ] || wget http://mirrors.sohu.com/php/php-5.6.6.tar.gz tar zxf php-5.6.6.tar.gz && cd php-5.6.6 for p in openssl-devel bzip2-devel \ libxml2-devel curl-devel libpng-devel \ libjpeg-devel freetype-devel libmcrypt-devel\ libtool-ltdl-devel perl-devel do myum $p done if ! grep -q '^php-fpm:' /etc/passwd then useradd -M -s /sbin/nologin php-fpm fi check_ok ./configure \ --prefix=/usr/local/php-fpm \ --with-config-file-path=/usr/local/php-fpm/etc \ --enable-fpm \ --with-fpm-user=php-fpm \ --with-fpm-group=php-fpm \ --with-mysql=/usr/local/mysql \ --with-mysql-sock=/tmp/mysql.sock \ --with-libxml-dir \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-freetype-dir \ --with-iconv-dir \ --with-zlib-dir \ --with-mcrypt \ --enable-soap \ --enable-gd-native-ttf \ --enable-ftp \ --enable-mbstring \ --enable-exif \ --disable-ipv6 \ --with-pear \ --with-curl \ --with-openssl check_ok make && make install check_ok [ -f /usr/local/php-fpm/etc/php.ini ] || /bin/cp php.ini-production /usr/local/php-fpm/etc/php.ini if /usr/local/php-fpm/bin/php -i |grep -iq 'date.timezone => no value' then sed -i '/;date.timezone =$/a\date.timezone = "Asia\/Chongqing"' /usr/local/php-fpm/etc/php.ini check_ok fi [ -f /usr/local/php-fpm/etc/php-fpm.conf ] || curl http://www.apelearn.com/study_v2/.phpfpm_conf -o /usr/local/php-fpm/etc/php-fpm.conf check_ok [ -f /etc/init.d/phpfpm ] || /bin/cp sapi/fpm/init.d.php-fpm /etc/init.d/phpfpm chmod 755 /etc/init.d/phpfpm chkconfig phpfpm on service phpfpm start check_ok break ;; *) echo 'only 1(5.4) or 2(5.6)' ;; esac } ##function of install lnmp lnmp() { check_service mysqld check_service nginx check_service phpfpm echo "The lnmp done, Please use 'http://your ip/index.php' to access." } read -p "Please chose which type env you install, (lamp|lnmp)? " t case $t in lamp) read -p "Please chose the version of mysql. (5.1|5.6)" mysql_v read -p "Please chose the version of php. (5.4|5.6)" php_v lamp ;; lnmp) read -p "Please chose the version of mysql. (5.1|5.6)" mysql_v read -p "Please chose the version of php. (5.4|5.6)" php_v lnmp ;; *) echo "Only 'lamp' or 'lnmp' your can input." ;; esac ##111111 ##########end############## [root@centos-01 lanmp]#
2.更改README.md文件添加CCCCC,提示我没有权限,看来是不能更改了
[root@centos-01 lanmp]# vim README.md [root@centos-01 lanmp]# cat README.md # lanmp lamp/lnmp 一键安装脚本 author: aming version: 0.2 aaaaa as df asd f bbbbb CCCCC [root@centos-01 lanmp]# git add README.md [root@centos-01 lanmp]# git commit -m "change README.md" [master efffdbe] change README.md 1 file changed, 1 insertion(+) [root@centos-01 lanmp]# git push warning: push.default 未设置,它的默认值将会在 Git 2.0 由 'matching' 修改为 'simple'。若要不再显示本信息并在其默认值改变后维持当前使用习惯, 进行如下设置: git config --global push.default matching 若要不再显示本信息并从现在开始采用新的使用习惯,设置: git config --global push.default simple 参见 'git help config' 并查找 'push.default' 以获取更多信息。 ('simple' 模式由 Git 1.7.11 版本引入。如果您有时要使用老版本的 Git, 为保持兼容,请用 'current' 代替 'simple' 模式) Warning: Permanently added the RSA host key for IP address '13.250.177.223' to the list of known hosts. ERROR: Permission to aminglinux/lanmp.git denied to sunyujun. fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. [root@centos-01 lanmp]#
3.如果线上的更改了,我们客户端相同步该怎么办,用git pull拉下来
[root@centos-01 lanmp]# git pull Already up-to-date. [root@centos-01 lanmp]#
分支管理
1.查看仓库中都有哪些分支
[root@centos-01 lanmp]# cd /data/gitroot/ [root@centos-01 gitroot]# git branch * master [root@centos-01 gitroot]#
2.创建新分支
[root@centos-01 gitroot]# git branch syj [root@centos-01 gitroot]# git branch * master syj [root@centos-01 gitroot]#
3.切换分支
[root@centos-01 gitroot]# git checkout syj 切换到分支 'syj' [root@centos-01 gitroot]#
4.星号到了syj分支上代表当前在syj分支中
[root@centos-01 gitroot]# git branch master * syj [root@centos-01 gitroot]#
5.我们在syj分支下创建一个新的文件2.txt,然后提交,然后再切换到master分支发现没有这个2.txt文件,说明分支是相互隔离开的。
[root@centos-01 ~]# cd /data/gitroot/ [root@centos-01 gitroot]# git branch master * syj [root@centos-01 gitroot]# ls 1.txt [root@centos-01 gitroot]# vim 2.txt [root@centos-01 gitroot]# cat 2.txt 2222222222 [root@centos-01 gitroot]# git add . [root@centos-01 gitroot]# git commit -m "add 2.txt" [syj db5eca6] add 2.txt 1 file changed, 1 insertion(+) create mode 100644 2.txt [root@centos-01 gitroot]# git checkout master 切换到分支 'master' [root@centos-01 gitroot]# ls 1.txt [root@centos-01 gitroot]#
1.我们想让两个分支合并,首先需要切换到目标分支下,然后使用git merge syj命令将syj分支下的变更同步到master上来
[root@centos-01 gitroot]# git checkout master 已经位于 'master' [root@centos-01 gitroot]# git merge syj 更新 892a682..db5eca6 Fast-forward 2.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 2.txt [root@centos-01 gitroot]# ls 1.txt 2.txt [root@centos-01 gitroot]#
2.现在我们做一个合并冲突的实验,我们给master分支下的2.txt文件增加一些内容,给syj分支下的2.txt文件删除一些内容,然后合并分支试试。
[root@centos-01 gitroot]# vim 2.txt [root@centos-01 gitroot]# cat 2.txt 2222222222 3333333333 [root@centos-01 gitroot]# git add 2.txt [root@centos-01 gitroot]# git commit -m "ch 2.txt" [master 5e371af] ch 2.txt 1 file changed, 1 insertion(+) [root@centos-01 gitroot]# git checkout syj 切换到分支 'syj' [root@centos-01 gitroot]# vim 2.txt [root@centos-01 gitroot]# cat 2.txt 2 [root@centos-01 gitroot]# git add 2.txt [root@centos-01 gitroot]# git commit -m "ch 2.txt" [syj 9c66db9] ch 2.txt 1 file changed, 1 insertion(+), 1 deletion(-) [root@centos-01 gitroot]# git checkout master 切换到分支 'master' [root@centos-01 gitroot]# git merge syj 自动合并 2.txt 冲突(内容):合并冲突于 2.txt 自动合并失败,修正冲突然后提交修正的结果。 [root@centos-01 gitroot]#
3.我们编辑两个分支下的2.txt文件两者保持一致。
[root@centos-01 gitroot]# vim 2.txt [root@centos-01 gitroot]# cat 2.txt <<<<<<< HEAD 2222222222 3333333333 ======= 2 >>>>>>> syj [root@centos-01 gitroot]# vim 2.txt [root@centos-01 gitroot]# cat 2.txt 2 [root@centos-01 gitroot]# git checkout syj 2.txt: needs merge error: 您需要先解决当前索引的冲突 [root@centos-01 gitroot]# git add 2.txt [root@centos-01 gitroot]# git commit -m "ch 2.txt" [master 7b11106] ch 2.txt [root@centos-01 gitroot]# git merge syj Already up-to-date. [root@centos-01 gitroot]# git checkout syj 切换到分支 'syj' [root@centos-01 gitroot]# cat 2.txt 2
4.删除分支(-D强制删除分支)
[root@centos-01 gitroot]# git checkout master 切换到分支 'master' [root@centos-01 gitroot]# git branch -d syj 已删除分支 syj(曾为 9c66db9)。 [root@centos-01 gitroot]#
远程分支管理
1.我们先创建一个新文件
2.接着我们创建一个新的分支dev
3.下面我们克隆一下远程的仓库
4.我们克隆完成之后发现克隆的分支里只有master,我们远程其实是有两个分支,还有一个dev
[root@centos-01 tmp]# git clone https://github.com/sunyujun/linuxlearn.git 正克隆到 'linuxlearn'... remote: Counting objects: 9, done. remote: Compressing objects: 100% (5/5), done. remote: Total 9 (delta 1), reused 5 (delta 0), pack-reused 0 Unpacking objects: 100% (9/9), done. [root@centos-01 tmp]# cd linuxlearn/ [root@centos-01 linuxlearn]# ls 2.txt linux.doc README.md [root@centos-01 linuxlearn]# git branch * master [root@centos-01 linuxlearn]#
5.查看远程服务器的分支
[root@centos-01 linuxlearn]# git ls-remote origin 26359e748fd0482441e6b24fec1b73689774f8f9 HEAD 26359e748fd0482441e6b24fec1b73689774f8f9 refs/heads/dev 26359e748fd0482441e6b24fec1b73689774f8f9 refs/heads/master [root@centos-01 linuxlearn]#
6.切换分支到dev
[root@centos-01 linuxlearn]# git checkout -b dev origin/dev 分支 dev 设置为跟踪来自 origin 的远程分支 dev。 切换到一个新分支 'dev' [root@centos-01 linuxlearn]# git branch * dev master [root@centos-01 linuxlearn]#
7.在dev分支下新建一个文件3.txt并推送到远程服务器
[root@centos-01 linuxlearn]# ls 2.txt linux.doc README.md [root@centos-01 linuxlearn]# vim 3.txt [root@centos-01 linuxlearn]# cat 3.txt 3333333333 [root@centos-01 linuxlearn]# git add 3.txt [root@centos-01 linuxlearn]# git commit -m "ch 3.txt" [dev 9bafd0e] ch 3.txt 1 file changed, 1 insertion(+) create mode 100644 3.txt [root@centos-01 linuxlearn]# git push warning: push.default 未设置,它的默认值将会在 Git 2.0 由 'matching' 修改为 'simple'。若要不再显示本信息并在其默认值改变后维持当前使用习惯, 进行如下设置: git config --global push.default matching 若要不再显示本信息并从现在开始采用新的使用习惯,设置: git config --global push.default simple 参见 'git help config' 并查找 'push.default' 以获取更多信息。 ('simple' 模式由 Git 1.7.11 版本引入。如果您有时要使用老版本的 Git, 为保持兼容,请用 'current' 代替 'simple' 模式) Username for 'https://github.com': sunyujun Password for 'https://sunyujun@github.com': Counting objects: 4, done. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 254 bytes | 0 bytes/s, done. Total 3 (delta 1), reused 0 (delta 0) remote: Resolving deltas: 100% (1/1), completed with 1 local object. To https://github.com/sunyujun/linuxlearn.git 26359e7..9bafd0e dev -> dev [root@centos-01 linuxlearn]#
8.只推dev分支
[root@centos-01 linuxlearn]# git push origin dev Username for 'https://github.com': sunyujun Password for 'https://sunyujun@github.com': Everything up-to-date [root@centos-01 linuxlearn]#
9.将客户端新建的分支推到远程客户端
[root@centos-01 linuxlearn]# git branch dev2 [root@centos-01 linuxlearn]# git branch * dev dev2 master [root@centos-01 linuxlearn]# git checkout dev2 切换到分支 'dev2' [root@centos-01 linuxlearn]# ls 2.txt 3.txt linux.doc README.md [root@centos-01 linuxlearn]# vim 4.txt [root@centos-01 linuxlearn]# cat 4.txt 444444444444 [root@centos-01 linuxlearn]# git add 4.txt [root@centos-01 linuxlearn]# git commit -m "add 4.txt" [dev2 f3bea1d] add 4.txt 1 file changed, 1 insertion(+) create mode 100644 4.txt [root@centos-01 linuxlearn]# git push origin dev2 Username for 'https://github.com': sunyujun Password for 'https://sunyujun@github.com': Counting objects: 4, done. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 256 bytes | 0 bytes/s, done. Total 3 (delta 1), reused 0 (delta 0) remote: Resolving deltas: 100% (1/1), completed with 1 local object. To https://github.com/sunyujun/linuxlearn.git * [new branch] dev2 -> dev2 [root@centos-01 linuxlearn]#
标签管理
1.
[root@centos-01 linuxlearn]# git checkout master 切换到分支 'master' [root@centos-01 linuxlearn]# git tag v1.0 [root@centos-01 linuxlearn]# git tag v1.0 [root@centos-01 linuxlearn]# git show v1.0 commit 26359e748fd0482441e6b24fec1b73689774f8f9 Author: sunyujun <278108678@qq.com> Date: Sun May 6 09:25:26 2018 +0800 Create linux.doc diff --git a/linux.doc b/linux.doc new file mode 100644 index 0000000..a08e1f3 --- /dev/null +++ b/linux.doc @@ -0,0 +1 @@ +linux [root@centos-01 linuxlearn]# git log --pretty=oneline 26359e748fd0482441e6b24fec1b73689774f8f9 Create linux.doc 21c6941c478471a8f192bd93c359759422d75aa3 add 2.txt a08b6ef1d0d706437114974776e83a9e659bc378 fldsjfds [root@centos-01 linuxlearn]# git tag v0.8 21c6941c4784 [root@centos-01 linuxlearn]# git tag v0.8 v1.0 [root@centos-01 linuxlearn]# git log --pretty=oneline --abbrev-commit 26359e7 Create linux.doc 21c6941 add 2.txt a08b6ef fldsjfds [root@centos-01 linuxlearn]# git tag -a v0.1 -m "first tag" a08b6ef [root@centos-01 linuxlearn]# git tag v0.1 v0.8 v1.0 [root@centos-01 linuxlearn]# git show v0.1 tag v0.1 Tagger: phper <278108678@qq.com> Date: Tue May 8 06:34:26 2018 +0800 first tag commit a08b6ef1d0d706437114974776e83a9e659bc378 Author: phper <278108678@qq.com> Date: Sat May 5 16:29:12 2018 +0800 fldsjfds diff --git a/README.md b/README.md new file mode 100644 index 0000000..eb983dd --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# linuxlearn ...skipping... tag v0.1 Tagger: phper <278108678@qq.com> Date: Tue May 8 06:34:26 2018 +0800 first tag commit a08b6ef1d0d706437114974776e83a9e659bc378 Author: phper <278108678@qq.com> Date: Sat May 5 16:29:12 2018 +0800 fldsjfds diff --git a/README.md b/README.md new file mode 100644 index 0000000..eb983dd --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# linuxlearn ...skipping... tag v0.1 Tagger: phper <278108678@qq.com> Date: Tue May 8 06:34:26 2018 +0800 first tag commit a08b6ef1d0d706437114974776e83a9e659bc378 Author: phper <278108678@qq.com> Date: Sat May 5 16:29:12 2018 +0800 fldsjfds diff --git a/README.md b/README.md new file mode 100644 index 0000000..eb983dd --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# linuxlearn ...skipping... tag v0.1 Tagger: phper <278108678@qq.com> Date: Tue May 8 06:34:26 2018 +0800 first tag commit a08b6ef1d0d706437114974776e83a9e659bc378 Author: phper <278108678@qq.com> Date: Sat May 5 16:29:12 2018 +0800 fldsjfds diff --git a/README.md b/README.md new file mode 100644 index 0000000..eb983dd --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# linuxlearn ...skipping... tag v0.1 Tagger: phper <278108678@qq.com> Date: Tue May 8 06:34:26 2018 +0800 first tag commit a08b6ef1d0d706437114974776e83a9e659bc378 Author: phper <278108678@qq.com> Date: Sat May 5 16:29:12 2018 +0800 fldsjfds diff --git a/README.md b/README.md new file mode 100644 index 0000000..eb983dd --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# linuxlearn ...skipping... tag v0.1 Tagger: phper <278108678@qq.com> Date: Tue May 8 06:34:26 2018 +0800 first tag commit a08b6ef1d0d706437114974776e83a9e659bc378 Author: phper <278108678@qq.com> Date: Sat May 5 16:29:12 2018 +0800 fldsjfds diff --git a/README.md b/README.md new file mode 100644 index 0000000..eb983dd --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# linuxlearn [root@centos-01 linuxlearn]#
2.删除一个tag
[root@centos-01 linuxlearn]# git tag -d v0.1 已删除 tag 'v0.1'(曾为 9739c3d) [root@centos-01 linuxlearn]# git push origin v1.0 (推送一个tag) Username for 'https://github.com': sunyujun Password for 'https://sunyujun@github.com': Total 0 (delta 0), reused 0 (delta 0) To https://github.com/sunyujun/linuxlearn.git * [new tag] v1.0 -> v1.0 [root@centos-01 linuxlearn]#
3.将所有的tag推送到远程
[root@centos-01 linuxlearn]# git push --tag origin Username for 'https://github.com': sunyujun Password for 'https://sunyujun@github.com': Total 0 (delta 0), reused 0 (delta 0) To https://github.com/sunyujun/linuxlearn.git * [new tag] v0.8 -> v0.8 [root@centos-01 linuxlearn]#
4.远程同步删除tag
[root@centos-01 linuxlearn]# git tag v0.8 v1.0 [root@centos-01 linuxlearn]# git tag -d v0.8 已删除 tag 'v0.8'(曾为 21c6941) [root@centos-01 linuxlearn]# git tag v1.0 [root@centos-01 linuxlearn]# git push origin :refs/tags/v0.8 Username for 'https://github.com': sunyujun Password for 'https://sunyujun@github.com': To https://github.com/sunyujun/linuxlearn.git - [deleted] v0.8 [root@centos-01 linuxlearn]#
git别名
1.commit的别名改成ci
[root@centos-01 linuxlearn]# git config --global alias.ci commit [root@centos-01 linuxlearn]# ls 2.txt linux.doc README.md [root@centos-01 linuxlearn]# vim 3.txt [root@centos-01 linuxlearn]# cat 3.txt 3333333333333 [root@centos-01 linuxlearn]# git add 3.txt [root@centos-01 linuxlearn]# git ci -m "add 3.txt" [master b299542] add 3.txt 1 file changed, 1 insertion(+) create mode 100644 3.txt [root@centos-01 linuxlearn]#
2.查看git别名使用的命令
[root@centos-01 linuxlearn]# git config --list |grep alias alias.ci=commit [root@centos-01 linuxlearn]#
3.查看log
4.取消别名
[root@centos-01 linuxlearn]# git config --global --unset alias.ci
搭建git服务器
1.首先安装git
[root@centos-02 ~]# yum install -y git
2.禁止git用户远程登录
[root@centos-02 ~]# useradd -s /usr/bin/git-shell git [root@centos-02 ~]# cd /home/git/ [root@centos-02 git]# ls [root@centos-02 git]# mkdir .ssh [root@centos-02 git]# touch .ssh/authorized_keys [root@centos-02 git]# chmod 600 .ssh/authorized_keys [root@centos-02 git]# chown -R git:git .ssh [root@centos-02 git]#
3.在01服务器上将公钥放到02服务器的git家目录authorized_keys文件中
[root@centos-01 ~]# cat .ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBTj3AjVScW1LoWdcbJLLwhgNcemhko3PMu8Sze9QePkvvCi49seQrcet9Yp9zxAVovs74tWHQPmfJ3h2OMx3GDk36b14O+8WpbKnZV/pN0PUX1ZvVVfw7v8t22SDHYm09jHHbzQJdiMK2TJ
89RcKmE8d8D2Z9igInhdK2BEaGp4JYVQZdhchM58JcE+rvPcdsDhEhsA+z88UejWBGMZpJo1T8OCaK0OKPqKR7ZRt1kSlG78CDuHoldDu9HaKMm5ED/JxguC8EyIOLnnHTa/3kutMIEdK4ZOowlAEsgVmrKizMa7JvDOHhl5ycoaL8DD/rdhaL
quXX+8bRcgqXl385 root@centos-01 [root@centos-01 ~]# [root@centos-02 git]# vim .ssh/authorized_keys [root@centos-02 git]# cat .ssh/authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBTj3AjVScW1LoWdcbJLLwhgNcemhko3PMu8Sze9QePkvvCi49seQrcet9Yp9zxAVovs74tWHQPmfJ3h2OMx3GDk36b14O+8WpbKnZV/pN0PUX1ZvVVfw7v8t22SDHYm09jHHbzQJdiMK2TJ
89RcKmE8d8D2Z9igInhdK2BEaGp4JYVQZdhchM58JcE+rvPcdsDhEhsA+z88UejWBGMZpJo1T8OCaK0OKPqKR7ZRt1kSlG78CDuHoldDu9HaKMm5ED/JxguC8EyIOLnnHTa/3kutMIEdK4ZOowlAEsgVmrKizMa7JvDOHhl5ycoaL8DD/rdhaL
quXX+8bRcgqXl385 root@centos-01 [root@centos-02 git]#
4.测试公钥是否设置成功,结果说明成功了只是git是不允许登录的
[root@centos-01 ~]# ssh git@192.168.133.88 fatal: Interactive git shell is not enabled. hint: ~/git-shell-commands should exist and have read and execute access. Connection to 192.168.133.88 closed. [root@centos-01 ~]#
5.创建一个git的仓库
[root@centos-02 git]# cd /data/ [root@centos-02 data]# mkdir /data/gitroot [root@centos-02 data]# cd /data/gitroot/ [root@centos-02 gitroot]# git init --bare sample.git 初始化空的 Git 版本库于 /data/gitroot/sample.git/ [root@centos-02 gitroot]# ls sample.git [root@centos-02 gitroot]# chown -R git.git sample.git [root@centos-02 gitroot]#
6.在远程上(01客户端)克隆服务器仓库
[root@centos-01 ~]# git clone git@192.168.133.88:/data/gitroot/sample.git 正克隆到 'sample'... warning: 您似乎克隆了一个空版本库。 [root@centos-01 ~]# cd sample/ [root@centos-01 sample]# ls -la 总用量 4 drwxr-xr-x 3 root root 18 5月 9 06:53 . dr-xr-x---. 21 root root 4096 5月 9 06:53 .. drwxr-xr-x 7 root root 119 5月 9 06:53 .git [root@centos-01 sample]# cp /e epel-release-7-11.noarch.rpm etc/ [root@centos-01 sample]# cp /etc/init.d/mysqld . [root@centos-01 sample]# git add . [root@centos-01 sample]# git commit -m "add new file" [master(根提交) e841397] add new file 1 file changed, 388 insertions(+) create mode 100755 mysqld [root@centos-01 sample]# git push origin master Counting objects: 3, done. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 3.88 KiB | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To git@192.168.133.88:/data/gitroot/sample.git * [new branch] master -> master [root@centos-01 sample]#
7.测试git服务器
[root@centos-01 sample]# echo "lafldkflksdf" > 222.txt [root@centos-01 sample]# git add 222.txt [root@centos-01 sample]# git commit -m "add 222.txt" [master 6c56668] add 222.txt 1 file changed, 1 insertion(+) create mode 100644 222.txt [root@centos-01 sample]# git push warning: push.default 未设置,它的默认值将会在 Git 2.0 由 'matching' 修改为 'simple'。若要不再显示本信息并在其默认值改变后维持当前使用习惯, 进行如下设置: git config --global push.default matching 若要不再显示本信息并从现在开始采用新的使用习惯,设置: git config --global push.default simple 参见 'git help config' 并查找 'push.default' 以获取更多信息。 ('simple' 模式由 Git 1.7.11 版本引入。如果您有时要使用老版本的 Git, 为保持兼容,请用 'current' 代替 'simple' 模式) Counting objects: 4, done. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 279 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To git@192.168.133.88:/data/gitroot/sample.git e841397..6c56668 master -> master [root@centos-01 sample]# cd /tmp/ [root@centos-01 tmp]# git clone git@192.168.133.88:/data/gitroot/sample.git 正克隆到 'sample'... remote: Counting objects: 6, done. remote: Compressing objects: 100% (4/4), done. remote: Total 6 (delta 0), reused 0 (delta 0) 接收对象中: 100% (6/6), 4.13 KiB | 0 bytes/s, done. [root@centos-01 tmp]# ls sample/ 222.txt mysqld [root@centos-01 tmp]# cd sample/ [root@centos-01 sample]# vim 222.txt [root@centos-01 sample]# cat 222.txt lafldkflksdf alfdldsflsdlf [root@centos-01 sample]# git add 222.txt [root@centos-01 sample]# git commit -m "ch 222.txt" [master 6f7c268] ch 222.txt 1 file changed, 1 insertion(+) [root@centos-01 sample]# git push warning: push.default 未设置,它的默认值将会在 Git 2.0 由 'matching' 修改为 'simple'。若要不再显示本信息并在其默认值改变后维持当前使用习惯, 进行如下设置: git config --global push.default matching 若要不再显示本信息并从现在开始采用新的使用习惯,设置: git config --global push.default simple 参见 'git help config' 并查找 'push.default' 以获取更多信息。 ('simple' 模式由 Git 1.7.11 版本引入。如果您有时要使用老版本的 Git, 为保持兼容,请用 'current' 代替 'simple' 模式) Counting objects: 5, done. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 295 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To git@192.168.133.88:/data/gitroot/sample.git 6c56668..6f7c268 master -> master [root@centos-01 sample]# cd /root/sample/ [root@centos-01 sample]# ls 222.txt mysqld [root@centos-01 sample]# git pull remote: Counting objects: 5, done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. 来自 192.168.133.88:/data/gitroot/sample 6c56668..6f7c268 master -> origin/master 更新 6c56668..6f7c268 Fast-forward 222.txt | 1 + 1 file changed, 1 insertion(+) [root@centos-01 sample]# cat 222.txt lafldkflksdf alfdldsflsdlf [root@centos-01 sample]#
安装gitlab
1.安装gitlab(失败,还是用官方的安装吧)
[root@centos-01 sample]# vim /etc/yum.repos.d/gitlab.repo [root@centos-01 sample]# cat /etc/yum.repos.d/gitlab.repo [gitlab-ce] name=gitlab-ce baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7 Repo_gpgcheck=0 Enabled=1 Gpgkey=https://packages.gitlab.com/gpg.key [root@centos-01 sample]# yum install -y gitlab-ce
gitlab-ce-10.7.3-ce.0.el7.x86_64.rpm 的公钥尚未安装 失败的软件包是:gitlab-ce-10.7.3-ce.0.el7.x86_64 GPG 密钥配置为:https://packages.gitlab.com/gpg.key [root@centos-01 sample]#
2.官方安装
[root@centos-01 ~]# sudo yum install -y curl policycoreutils-python openssh-server openssh-clients (安装和配置必要的依赖关系) [root@centos-01 ~]# sudo systemctl enable sshd [root@centos-01 ~]# sudo systemctl start sshd [root@centos-01 ~]# sudo firewall-cmd --permanent --add-service=http FirewallD is not running [root@centos-01 ~]# sudo systemctl reload firewalld Job for firewalld.service invalid. [root@centos-01 ~]# sudo yum install postfix 已加载插件:fastestmirror, langpacks https://repo.mongodb.org/yum/redhat/7/mongodb-org/3.6/x86_64/repodata/repomd.xml: [Errno 14] curl#35 - "TCP connection reset by peer" 正在尝试其它镜像。 Loading mirror speeds from cached hostfile * base: mirrors.tuna.tsinghua.edu.cn * epel: mirror.dmmlabs.jp * extras: mirrors.tuna.tsinghua.edu.cn * updates: mirrors.njupt.edu.cn 软件包 2:postfix-2.10.1-6.el7.x86_64 已安装并且是最新版本 无须任何处理 [root@centos-01 ~]# sudo systemctl enable postfix [root@centos-01 ~]# sudo systemctl start postfix [root@centos-01 ~]#
3.生成gitlab包仓库
[root@centos-01 ~]# curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
4.安装gitlab-ce并指定访问的ip为192.168.133.44(可以指定其他域名)
[root@centos-01 ~]# sudo EXTERNAL_URL="192.168.133.44" yum install -y gitlab-ce
5.配置配置文件
[root@centos-01 ~]# gitlab-ctl reconfigure
6.配置文件目录(目的是配置gitlab相关的服务启动)
[root@centos-01 ~]# cat /etc/gitlab/gitlab.rb |grep external_url
##! For more details on configuring external_url see:
external_url 'http://192.168.133.44'
# registry_external_url 'https://registry.gitlab.example.com'
# pages_external_url "http://pages.example.com/"
# gitlab_pages['artifacts_server_url'] = nil # Defaults to external_url + '/api/v4'
# mattermost_external_url 'http://mattermost.example.com'
[root@centos-01 ~]#
[root@centos-01 ~]# ps aux|grep gitlab [root@centos-01 ~]# netstat -lntp
[root@centos-01 ~]# [root@centos-01 ~]# /etc/init.d/nginx stop (关闭之前的nginx) [root@centos-01 ~]# chkconfig nginx off
1.停止服务
[root@centos-01 ~]# gitlab-ctl stop
2.启动服务
[root@centos-01 ~]# gitlab-ctl start
3.ip进行访问
使用gitlab
1.配置gitlab域名访问,配置文件如下,修改server_name就行。
[root@centos-01 ~]# cat /var/opt/gitlab/nginx/conf/gitlab-http.conf |grep server server unix:/var/opt/gitlab/gitlab-workhorse/socket; server { server_name 192.168.133.44; server_tokens off; ## Don't show the nginx version number, a security best practice [root@centos-01 ~]#
2.在gitlab上新建项目,首先建立一个group
3.创建项目
4.创建完项目后会有一个提醒,意思是还没有建立ssh key,这个key和我们之前做的gitlab一样需要添加key,然后就可以通信了。
5.点setting添加key
6.添加新用户
gitlab备份和恢复
1.执行命令
2.备份文件所在目录
3.恢复gitlab