Gitlab 배포 및 응용 프로그램

Gitlab 배포 및 응용 프로그램
[루트 @ localhost를 ~] #에서 mkdir XGP
[루트 @ localhost를 ~] #에서 cd XGP /
[루트 @ localhost를 XGP] #은 초기화 이눔
/root/xgp/.git/의 빈 Git 저장소 초기화를
[루트 @ localhost를 XGP] # xgp.txt 정력
[루트 @ localhost를 XGP] # 고양이 xgp.txt의
111master
[루트 @ localhost를 XGP] #은 추가 xgp.txt 이눔
[루트 @ localhost를 XGP] # (가) -m "마스터 지점에서 최초의 제출을"커밋 이눔
[마스터 마스터에서 분기의 b211b8e] 제출 (루트 제출)
. 1 개 파일이 변경, 삽입을. 1 (+)를
MODE에게 100,644 xgp.txt 만들기

첫째, 우리는 dev에 지점으로 전환 한 후 dev에 지점을 만들고 :
[루트 @ localhost를 XGP] # 자식 체크 아웃 -b dev에
새로운 지점 'DEV'로 전환

Gitlab 배포 및 응용 프로그램
은 -b 매개 변수를 자식 체크 아웃 명령은 다음과 같은 두 가지 명령에 스위칭 및 대응을 나타냅니다 :
$ 힘내 지점이 dev에
$ 자식 체크 아웃 dev에
지점 'DEV'로 전환

그런 다음, 자식 지점 명령을 사용하여 현재 지점을 볼 :
[루트 @ localhost를 XGP] #의 자식 지점

  • DEV
    마스터
    Gitlab 배포 및 응용 프로그램

자식 분기 명령 목록을 모든 지점, 앞서 현재의 지점 모노그램 별표의.

그런 다음, 우리는 제대로 xgp.txt 수정할 수에 대한 같은, 라인 추가, dev에 지점에 제기 할 수 있습니다 :
[루트 @ localhost를 XGP] # 고양이 xgp.txt
111master
Qqqqdve 추가를

그런 다음 제출 :
[루트 @ localhost를 XGP] #은 추가 xgp.txt 이눔
[루트 @ localhost를 XGP] #이 (가) -m "첫 dev에"커밋 이눔
[DEV eac3426] 첫째 dev에
변경 한 파일을, 1 삽입 (+)

이제, 작업의 dev에 지점이 완료되어, 우리는 마스터 브랜치로 전환 할 수 있습니다 :
[루트 @ localhost를 XGP] #의 자식이 체크 아웃 마스터
지점 '마스터'로 전환
Gitlab 배포 및 응용 프로그램
xgp.txt 파일을 보려면 다음 마스터 브랜치로 다시 전환 이후, 그냥 내용을 추가 사라! 그는 dev에 지점에 제출, 마스터 분기점을 제출하기 때문에 순간에 변경되지 않았습니다 :
[루트 @ localhost를 XGP] # 고양이 xgp.txt의
111master을

이제, 우리는 마스터 브랜치 dev에 지점의 작업의 결과를 통합했다 :
[루트 @ localhost를 XGP] #의 자식 병합 dev에
업데이트 b211b8e..eac3426
빨리 감기의
xgp.txt | 1 +
1 파일이 변경, 1 삽입 (+)
자식 병합 명령은 현재 분기를 병합 할 지점을 지정하는 데 사용됩니다. 합병 후, 다음 xgp.txt의 내용을 볼 수, 당신은 최신을보고 dev에 지점이 정확히 동일 제출할 수 있습니다.
앞으로 위의 정보에 주목했다, 힘내 합병은 매우 빠르고 있도록이 합병 제출 현재 dev에 마스터 직접 가리키는하는 "빨리 감기 모드"이라고 우리에게 알려줍니다.
물론, 아니 모든 합병은 빨리 감기, 우리는 나중에 다른 방법과 결합에 대해 이야기합니다 수 있습니다.
합병이 완료되면, 당신은 안전하게 dev에 지점을 삭제할 수 있습니다 :

에서 봐
[루트 @ localhost를 XGP] # 로그 GIT
(가) eac342633a72b3590a019e4d758f4a60707acda2 커밋
저자 : ADMIN <ADMIN의 ADMIN @>
날짜 : 목 2019년 11월 14일 9시 18분 47초 0800

第一次dev

b211b8ef636e987166fb4a056fb778020f6518ae 커밋
저자 : 관리자를 <관리자 관리자 @>
날짜 : 목 11월 14일 9시 12분 11초 2019 0800

第一次提交从master分支

삭제 dev에 지점
[루트 @ localhost를 XGP] #의 자식 지점 -d DEV는
(누가 eac3426) 지점이 dev에 삭제.

삭제,보기 지점 후, 왼쪽의 마스터 지점 :
[루트 @ localhost를 XGP] #의 자식 지점

  • 석사

생성, 삭제하고 작업을 완료하기 위해 힘내 분기를 사용하고 병합 분기를 삭제하는 것이 좋습니다,이 마스터에 직접 그래서, 매우 빠르게 가지를 병합하기 때문에
지점 작업 효과 동일하지만 과정을 더 안전.
요약
힘내 지점의 광범위한 사용을 장려 :
보기 지점 : 자식 분기
자식 지점 <이름> : 분기 만들
스위치 지점 : 자식 체크 아웃 <이름>
A + 스위칭 지점을 만듭니다 자식 체크 아웃 -b <이름>
현재의 지점에 지점 병합 : 자식 병합을 < 이름>
삭제 지점 : 자식 지점 -d <이름>

해결은 충돌
종종 가지를 병합하는 것은 쉬운 일이 아닙니다, 삶의 모든 가능성을 불행한 일을.
새로운 XGP 분기를 준비 우리의 새로운 지점의 개발을 계속 :
[루트 @ localhost를 XGP] # 자식 체크 아웃 XGP -b
새로운 지점으로 전환 'XGP'
수정 xgp.txt 마지막 줄 읽기 :
[루트 @ localhost를 XGP] #을 xgp.txt의 CAT
111master의
qqqqdve의
충돌이 추가
제출 XGP 분기 :
[루트 @ localhost를 XGP] #은 추가 xgp.txt 이눔
[루트 @ localhost를 XGP] #이 (가) -m "XGP 충돌"커밋 이눔
[XGP 9a92c8f] XGP 충돌
한 파일이 변경 1 개 삽입 (+)

: 마스터 브랜치로 전환
[XGP 루트 @ 로컬 호스트] # 망할 놈의 체크 아웃 마스터
스위치 지점 '마스터'로
[XGP 루트 @ 로컬 호스트] # 고양이 xgp.txt
111master
Qqqqdve

: 대신 마스터 지점 xgp.txt 파일의 마지막 줄에
[루트 @ localhost를 XGP] # 고양이 xgp.txt의
111master
qqqqdve의
추가 버그 충돌

제출 :
[루트 @ localhost를 XGP] #은 추가 xgp.txt 이눔
[루트 @ localhost를 XGP] #이 (가) "충돌을 제출 1"-m 커밋 이눔
[마스터 43f4ad7] (1) 제출 충돌
한 삽입 (+, 1 개 파일이 변경 )

: 지금, 마스터 분기 및 각 지점 XGP는 각각 새로운 제출, 그것은이된다
Gitlab 배포 및 응용 프로그램
이 경우, 힘내는 자신의 수정을 병합 시도 할 수 있습니다 "빠른 합병"을 수행 할 수 있지만, 이러한 합병 될 수있다 충돌이 발생, 우리는 시도 :
[루트 @ localhost를 XGP] # 이눔 XGP 병합
에 자동으로 xgp.txt 병합
xgp.txt에서 병합 충돌 : 충돌 (내용을)
자동 병합, 개정 실패와 수정 된 결과 충돌을 제출합니다.

아니나 다를까, 충돌! 망할 놈의 파일 xgp.txt 충돌이 있음을 우리에게 알려줍니다, 당신은 수동으로 제출하기 전에 충돌을 해결해야합니다. 자식의 상태는 우리에게 충돌 파일을 알 수 있습니다 :
[루트 @ localhost를 XGP] #의 자식 상태를

분기 마스터에 위치

아직 경로를 통합하지 않았습니다.

( "커밋 자식"해결 충돌 및 실행)

#

병합 경로 :

(사용 "자식 추가 <파일> ..."태그 솔루션)

#

당사자들은 개정 : xgp.txt를

#
수정은 아직 (이하 "자식 추가"를 사용 및 / 또는 "-a 커밋 자식") 제출 된 추가 된

我们可以直接查看 xgp.txt 的内容:
[root@localhost xgp]# cat xgp.txt
111master
qqqqdve
<<<<<<< HEAD #删除
bug冲突
======= #删除
冲突
-----------xgp #删除

再提交:
[root@localhost xgp]# vim xgp.txt
[root@localhost xgp]# git add xgp.txt
[root@localhost xgp]# git commit -m "解决冲突"
[master 8a29ce6] 解决冲突

现在, master 分支和xgp分支变成了下图所示:

Gitlab 배포 및 응용 프로그램

用带参数的 git log 也可以看到分支的合并情况
[root@localhost xgp]# git log --graph --pretty=oneline --abbrev-commit

  • 8a29ce6 解决冲突
    |\
    | * 9a92c8f xgp 冲突
  • | 43f4ad7 1 提交 冲突
    |/
  • eac3426 第一次dev
  • b211b8e 第一次提交从master分支

[root@localhost xgp]# cat xgp.txt
111master
qqqqdve
bug冲突
冲突

最后,删除 xgp 分支:
[root@localhost xgp]# git branch -d xgp
已删除分支 xgp(曾为 9a92c8f)。

工作完成。
小结
当 Git 无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
用 git log --graph 命令可以看到分支合并图。

分支管理策略
通常,合并分支时,如果可能, Git 会用 Fast forward 模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用 Fast forward 模式, Git 就会在 merge 时生成一个新的 commit,这样,从分支历史上就可以看出分
支信息。
下面我们实战一下--no-ff 方式的 git merge:
首先,仍然创建并切换 dev 分支:
[root@localhost xgp]# git checkout -b dev
切换到一个新分支 'dev'

修改 readme.txt 文件,并提交一个新的 commit:
[root@localhost xgp]# cat xgp.txt
111master
qqqqdve
bug冲突
冲突
强制禁用 Fast forward #添加

[root@localhost xgp]# git add xgp.txt # 提交到缓存
[root@localhost xgp]# git commit -m "强制禁用 Fast forward " #提交到版本库
[dev ea40f66] 强制禁用 Fast forward
1 file changed, 1 insertion(+)

现在,我们切换回 master:
[root@localhost xgp]# git checkout master
切换到分支 'master'

准备合并 dev 分支,请注意--no-ff 参数,表示禁用 Fast forward:
[root@localhost xgp]# git merge --no-ff -m "merge with no-ff" dev
Merge made by the 'recursive' strategy.
xgp.txt | 1 +
1 file changed, 1 insertion(+)

因为本次合并要创建一个新的 commit,所以加上-m 参数,把 commit 描述写进去。
合并后,我们用 git log 看看分支历史:
[root@localhost xgp]# git log --graph --pretty=oneline --abbrev-commit

  • 50623ba merge with no-ff
    |\
    | * ea40f66 强制禁用 Fast forward
    |/
  • 8a29ce6 解决冲突
    |\
    | * 9a92c8f xgp 冲突
  • | 43f4ad7 1 提交 冲突
    |/
  • eac3426 第一次dev
  • b211b8e 第一次提交从master分支
    可以看到,不使用 Fast forward 模式, merge 后就像这样:
    Gitlab 배포 및 응용 프로그램

Bug 分支
软件开发中, bug 就像家常便饭一样。有了 bug 就需要修复,在 Git 中,由于分支是如此的强大,所以,每个 bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。当你接到一个修复一个代号 101 的 bug 的任务时,很自然地,你想创建一个分支 issue-101 来修复它,但是,等等,当前正在 dev 上进行的工作还没有提交:

并不是你不想提交,而是工作只进行到一半,还没法提交,预计完成还需 1 天时间。但是,必须在两个小时内修复该
bug,怎么办?
幸好, Git 还提供了一个 stash 功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:

制作一个测试文件
[root@localhost xgp]# vim xgp.txt
[root@localhost xgp]# cat xgp.txt
111master
qqqqdve
bug冲突
冲突
强制禁用 Fast forward
测试存储区 #添加
[root@localhost xgp]# vim xxx.txt
[root@localhost xgp]# git add xgp.txt xxx.txt
[root@localhost xgp]# git status
位于分支 dev
要提交的变更:
(使用 "git reset HEAD <file>..." 撤出暂存区)

修改: xgp.txt

未跟踪的文件:
(使用 "git add <file>..." 以包含要提交的内容)

xxx.txt 

[root@localhost xgp]# git stash
Saved working directory and index state WIP on dev: ea40f66 强制禁用 Fast forward HEAD 现在位于 ea40f66强制禁用 Fast forward
[root@localhost xgp]# git status

位于分支 master

无文件要提交,干净的工作区

现在,用 git status 查看工作区,就是干净的(除非有没有被 Git 管理的文件),因此可以放心地创建分支来修复bug。
首先确定要在哪个分支上修复 bug,假定需要在 master 分支上修复,就从 master 创建临时分支:
[root@localhost xgp]# git checkout dev
切换到分支 'dev'
现在修复 bug,需要把“Git is free software ...”改为“Git is a free software ...”, 然后用 git stash pop,恢复的同时把 stash 内容也删了:
先查看一下
[root@localhost xgp]# git stash list
stash@{0}: WIP on master: 88eeb08 提交
[root@localhost xgp]# git stash show
xgp.txt | 1 +
xxx.txt | 1 +
2 files changed, 2 insertions(+)
恢复
[root@localhost xgp]# git stash pop
位于分支 dev
要提交的变更:
(使用 "git reset HEAD <file>..." 撤出暂存区)

新文件:    xxx.txt

尚未暂存以备提交的变更:
(使用 "git add <file>..." 更新要提交的内容)
(使用 "git checkout -- <file>..." 丢弃工作区的改动)

修改:      xgp.txt

丢弃了 refs/stash@{0} (f5b7fdc796da9978e268083f6985ed5ba28ec373)

[root@localhost xgp]# git status
位于分支 dev
要提交的变更:
(使用 "git reset HEAD <file>..." 撤出暂存区)

新文件:    xxx.txt

尚未暂存以备提交的变更:
(使用 "git add <file>..." 更新要提交的内容)
(使用 "git checkout -- <file>..." 丢弃工作区的改动)

修改: xgp.txt

[root@localhost xgp]# git commit -m "测试存储区 master提交暂存区 devtij交版本"
[dev 1256166] 测试存储区 master提交暂存区 devtij交版本
1 file changed, 1 insertion(+)
create mode 100644 xxx.txt

[root@localhost xgp]# git status
位于分支 dev
尚未暂存以备提交的变更:
(使用 "git add <file>..." 更新要提交的内容)
(使用 "git checkout -- <file>..." 丢弃工作区的改动)

修改:      xgp.txt

修改尚未加入提交(使用 "git add" 和/或 "git commit -a") #需要提交

[root@localhost xgp]# git add * #提交

查看一下
[root@localhost xgp]# ls
xgp.txt xxx.txt #可以看到已经恢复成功

切换到master分支合并分支
[root@localhost xgp]# git merge dev
更新 88eeb08..a1a9698
Fast-forward
xgp.txt | 1 +
xxx.txt | 1 +
2 files changed, 2 insertions(+)
create mode 100644 xxx.txt

小结
修复 bug 时,我们会通过创建新的 bug 分支进行修复,然后合并,最后删除;
当手头工作没有完成时,先把工作现场 git stash 一下,然后去修复 bug,修复后,再 git stash pop,回到工作现场。

Feature 分支
软件开发中,总有无穷无尽的新的功能要不断添加进来。
添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建
一个 feature 分支,在上面开发,完成后,合并,最后,删除该 feature 分支。
现在,你终于接到了一个新任务:开发代号为 Vulcan 的新功能,该功能计划用于下一代星际飞船。
于是准备开发:
[root@localhost xgp]# git checkout dev
A xx.txt
切换到分支 'dev'
[root@localhost xgp]# git checkout dev
A xx.txt
切换到分支 'dev'
[root@localhost xgp]# vim xgp.txt
[root@localhost xgp]# vim xx.txt
[root@localhost xgp]# git add *
[root@localhost xgp]# git stash
Saved working directory and index state WIP on dev: a1a9698 存储qu
HEAD 现在位于 a1a9698 存储qu
[root@localhost xgp]# git status

位于分支 dev

无文件要提交,干净的工作区
[root@localhost xgp]# git stash apply
位于分支 dev
要提交的变更:
(使用 "git reset HEAD <file>..." 撤出暂存区)

新文件:    xx.txt

尚未暂存以备提交的变更:
(使用 "git add <file>..." 更新要提交的内容)
(使用 "git checkout -- <file>..." 丢弃工作区的改动)

修改:      xgp.txt

[root@localhost xgp]# git stash list
stash@{0}: WIP on dev: a1a9698 存储qu
[root@localhost xgp]# git stash drop
丢弃了 refs/stash@{0} (0ab463ebbc4ee7f3a19cd8cadafd9ebe7b390aa9)

5 分钟后,开发完毕:
[root@localhost xgp]# git commit -m "强制删除分支"
[dev 81d2812] 强制删除分支
1 file changed, 2 insertions(+)
create mode 100644 xx.txt

切回 dev,准备合并:
[root@localhost xgp]# git checkout master
M xgp.txt
切换到分支 'master'
[root@localhost xgp]# git branch -d dev
error: 分支 'dev' 没有完全合并。
如果您确认要删除它,执行 'git branch -D dev'。
强制删除
[root@localhost xgp]# git branch -D dev
已删除分支 dev(曾为 81d2812)。

多人协作
推送分支
推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样, Git 就会把该分支推送
到远程库对应的远程分支上:
浏览器登陆github换个密钥
Gitlab 배포 및 응용 프로그램
Gitlab 배포 및 응용 프로그램
[root@localhost ~]# ssh-keygen -t rsa -C “[email protected]“ #linux生成密钥
然后把密钥放在githup放置密钥的地方
Gitlab 배포 및 응용 프로그램
把刚刚复制的到Linux里克隆到根目录和xgp目录
Gitlab 배포 및 응용 프로그램
Gitlab 배포 및 응용 프로그램
302 cd
303 ssh-keygen -t rsa -C "[email protected]"
304 cat /root/.ssh/id_rsa.pub
305 git clone [email protected]:xgp666/xgp.git
306 git clone [email protected]:xgp666/test.git
307 cd xgp/
308 git clone [email protected]:xgp666/test.git
309 cd test/
310 git checkout -b dev
311 vim index.html
312 ls
313 git add index.html
314 git commit -m "from /xgp"
315 git push origin dev
浏览器查看一下
Gitlab 배포 및 응용 프로그램

删除远程分支
[root@localhost test]# git branch -d dev
error: 无法删除您当前所在的分支 'dev'。
[root@localhost test]# git branch -r -d origin/dev
已删除远程分支 origin/dev(曾为 63aeb0a)。
[root@localhost test]# git push origin :dev
To [email protected]:xgp666/test.git

  • [deleted] dev
    Gitlab 배포 및 응용 프로그램
    删除库

    Gitlab 배포 및 응용 프로그램
    Gitlab 배포 및 응용 프로그램
    Gitlab 배포 및 응용 프로그램
    持续集成之 Gitlab 安装
    Gitlab 배포 및 응용 프로그램
    rpm -ivh gitlab-ce-11.9.8-ce.0.el6.x86_64.rpm #安装

  1. 配置启动 gitlab
    gitlab-ctl reconfigure
  2. 查看端口
    Gitlab 배포 및 응용 프로그램
  3. 浏览器登陆
    Gitlab 배포 및 응용 프로그램

Gitlab 배포 및 응용 프로그램

Gitlab 배포 및 응용 프로그램

创建项目

Gitlab 배포 및 응용 프로그램

Gitlab 배포 및 응용 프로그램

克隆项目到本地
项目路径:
Gitlab 배포 및 응용 프로그램
Linux克隆项目
git clone [email protected]:root/xgp-demo.git
Gitlab 배포 및 응용 프로그램

336 git clone [email protected]:root/xgp-demo.git
337 cd xgp-demo/
338 vim xgp.txt
339 git add xgp.txt
340 git commit -m "test"
341 git push origin master

자식 구성 파일을 수정
정력 /etc/gitlab/gitlab.rb 수정
external_url ' http://192.168.1.30 '(13) #이
다시 시작, 초기화
gitlab-CTL의 재구성
을 다시 시작 gitlab-CTL
브라우저보기를 오랜 시간

Gitlab 배포 및 응용 프로그램
Gitlab 배포 및 응용 프로그램

추천

출처blog.51cto.com/14320361/2450320