git 的安装(1)
//依赖库安装
2. # yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
3. # yum install gcc perl-ExtUtils-MakeMaker
//卸载低版本的 Git
4. # yum remove git
//下载新版的 Git 源码包(我放的了 /usr/local/git 的目录下了,git是我自己mkdir的目录)
5. # cd git
6. # wget https://github.com/git/git/archive/v2.9.2.tar.gz
7. # tar -xzvf v2.9.2.tar.gz
git 的安装(2)
# cd git-2.9.2
# make prefix=/usr/local/git all
# make prefix=/usr/local/git install
git 的安装(3)
vim /etc/profile
export PATH="/usr/local/git/bin:$PATH"
source /etc/profile
ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack
ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack
groupadd git
useradd git -g git
passwd git
cd /home/git/
mkdir .ssh #新建文件夹
chmod 700 .ssh
touch .ssh/authorized_keys #新建文件
chmod 600 .ssh/authorized_keys
git config --global user.name ‘用户名‘
git config --global user.email ‘邮箱地址‘
cat ~/.gitconfig(配置信息)
设置系统用户
ssh-keygen -t rsa -C "git邮箱"
ssh -T -v git@github.com (测试连接)
git的基本使用命令
1.mkdir demo
cd demo
git init 初始化仓库
2.git config user.name ‘用户名‘
git config user.email ‘邮箱地址‘
cat .git/config
创建仓库用户
3.git status (git的情况)
On branch master
nothing to commit(没有提交的文件), working tree clean(没有文件可以操作)
4.touch 1.txt
5.git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)(添加文件到暂存区)
1.txt
nothing added to commit but untracked files present (use "git add" to track)
6.git add 1.txt (添加到暂存区)
7.[root@ansible demo]# git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: 1.txt
8.git rm --cached 1.txt(从暂存区撤回文件)
9.[root@ansible demo]# git commit 1.txt(从暂存区提交到本地仓库)
[master e188f9f] 第三次提交
1 file changed, 0 insertions(+), 0 deletions(-)(一个文件有变动,增加0行,减少0行)
create mode 100644 1.txt (编号)
10.[root@ansible demo]# vim 1.txt
[root@ansible demo]# git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: 1.txt
no changes added to commit (use "git add" and/or "git commit -a")(你可以add在commit,也可以直接commit,因为这是我做过修改的文件)
11.[root@ansible demo]# git commit 1.txt -m‘1.txt追加‘(-m ‘添加本次提交的描述信息‘)
[master 240925b] 1.txt追加
1 file changed, 1 insertion(+)
12.[root@ansible demo]# git log(查看日志)
commit 240925b819e16e5fe8c78eea0f03b77c87779e17(hash索引,索引的内容为下面的信息)
Author: ding <ding@163.com>(提交者)
Date: Tue Jun 25 12:07:47 2019 +0800(时间时区)
1.txt追加
commit e188f9f91ee2783777cf86107d0b9bf9732bbcef
Author: ding <ding@163.com>
Date: Tue Jun 25 11:58:29 2019 +0800
13[root@ansible demo]# git log --pretty=oneline
240925b819e16e5fe8c78eea0f03b77c87779e17 1.txt追加
e188f9f91ee2783777cf86107d0b9bf9732bbcef 第三次提交
d864fa6441ba254ac7efa075ff92f5a477e3d1e0 ceshi1
0faa007d4f0aa882e073f1f82f33eba494b8f467 测试提交
[root@ansible demo]# git log --oneline
240925b 1.txt追加
e188f9f 第三次提交
d864fa6 ceshi1
0faa007 测试提交
[root@ansible demo]# git reflog(head@{移动几步到当前版本})
240925b HEAD@{0}: commit: 1.txt追加
e188f9f HEAD@{1}: commit: 第三次提交
d864fa6 HEAD@{2}: commit: ceshi1
0faa007 HEAD@{3}: commit (initial): 测试提交
14.版本的前进后退(通过HEAD指针控制)默认的HEAD指向最后一次提交
15.[root@ansible demo]# git reset --hard d864fa6(基于索引前进后退) (推荐)
HEAD is now at d864fa6 ceshi1
[root@ansible demo]# git reflog
d864fa6 HEAD@{0}: reset: moving to d864fa6
240925b HEAD@{1}: commit: 1.txt追加
e188f9f HEAD@{2}: commit: 第三次提交
d864fa6 HEAD@{3}: commit: ceshi1
0faa007 HEAD@{4}: commit (initial): 测试提交
15.[root@ansible demo]# git reset --hard HEAD^ (后退一个版本,几个^回退几个版本)
16.[root@ansible demo]# git reset --hard HEAD~2 (后退2个版本,~后面的数字表示回退版本个数)
17.git reset --soft (表示本地库变动,缓存和工作区都不变动)
18.git reset --mixed (表示本地库和缓存发生变动,工作区不变)
19.git diff HEAD [文件名](查看文件修改内容)
20.git diff HEAD^ [文件名](查看文件遇上一个版本的改变)
21.git diff (查看现有工作区修改记录)
22.git diff HEAD (查看所有修改记录)
git diff : 对比工作区(未 git add)和暂存区(git add 之后)
git diff --cached: 对比暂存区(git add 之后)和版本库(git commit 之后)
git diff HEAD: 对比工作区(未 git add)和版本库(git commit 之后)
23.gti branch -v (查看分支)
24.git checkout [分支名] (切换主分支)
25.git branch [分支名] (创建分支)
26.两个分支合并前,相同文件同一行有不相同的文件内容,合并时会产生冲突。改成想要的文件内容,删除特殊符号。再次git add 文件,然后git merge -m‘版本信息‘不要加文件名
命令小结:
1.git status(查看工作区和暂存区)
2.git add 「filename」(添加文件到暂存区)
3git commit [filename] -m ‘描述信息’(提交文件到本地库并且添加描述)
GIT 远程库
建立一个github‘账号
新建一个项目
本地git remote add origin https://github.com/bob-dpx/doupo.git (取一个别名)
[root@ansible doupo]# git remote -v(查看远程库)
origin https://github.com/bob-dpx/doupo.git (fetch)
origin https://github.com/bob-dpx/doupo.git (push)
[root@ansible doupo]# git push origin master(推送本地分支)
Username for ‘https://github.com‘: bob-dpx
Password for ‘https://bob-dpx@github.com‘:
Counting objects: 3, done.
Writing objects: 100% (3/3), 221 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/bob-dpx/doupo.git
* [new branch] master -> master
[root@ansible doupo_yaol]# git clone https://github.com/bob-dpx/doupo.git(克隆到本地)
Cloning into ‘doupo‘...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
Checking connectivity... done.
[root@ansible doupo_yaol]# ls
doupo
[root@ansible doupo_yaol]# cd doupo/
[root@ansible doupo]# ls
yanmeng.txt
[root@ansible doupo]# cat yanmeng.txt
盟主:萧炎
[root@ansible doupo]# cat .git/ (无需在初始化本地库,clone已经帮助我们初始化了)
branches/ description hooks/ info/ objects/ refs/
config HEAD index logs/ packed-refs
[root@ansible doupo_yaol]# git remote -v (clone连别名都建好了)
origin git@github.com:bob-dpx/gitspace.git (fetch)
origin git@github.com:bob-dpx/gitspace.git (push)
[root@ansible doupo]# git fetch origin master (下载远程分支)
[root@ansible doupo]# git checkout origin/master (切换到远程分支查看修改内容)
[root@ansible doupo]# git merge origin/master (合并分支)
[root@ansible doupo]# git pull origin master (合并远程分支)
GIT 加入新成员
github里点击:setting——>Collaborators——>输入邀请的成员名字,赋值link里的地址
被邀请的成员登录github,粘贴link的地址,选择同一加入
GIT 邀请其他团队来工作
其他团队的队长:fork一份自己的分支,在里面做修改,然后点击pull request——>new pull request ——>create pull request——>等待被合并
自己这边:——> pull request——>files changed(查看做了哪些修改)——>merge pull request合并代码
在centos7.6 搭建gitlab
1.在gitlab官网上下载软件包
https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm
下载完毕后使用md5sum 校验文件完整性
2.编写脚本
rpm-ivh gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm
yum install -y curl policycoreutils-python openssh-server cronie
lokkit -s http -s ssh
yum install postfix
service postfix start
chkconfig postfix on
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo EXTERNAL_URL="http://gitlab.example.com" yum install -y gitlab-ce
3.初始化程序
gitlab-ctl reconfigure(一般在4分钟内)
4.页面访问即可
原文:https://blog.51cto.com/13293172/2415800