Gitlabの展開と応用

Gitlabの展開と応用
[ルート@ localhostの〜]#ます。mkdir XGP
[ルート@ localhostの〜]#のCDのXGP /
[ルート@ localhostのXGP]#は初期化gitの
/root/xgp/.git/に空のGitリポジトリの初期化を
[ルート@ localhostのXGP]# xgp.txt vimの
[ルート@ localhostのXGP]#猫のxgp.txtの
111master
[ルート@ localhostのXGP]#が追加xgp.txt gitの
[ルートを@ localhostのXGP]#-m "masterブランチからの最初の提出を"コミットgitの
[マスターマスターからのブランチのb211b8e]提出を(ルートが提出)
。変更1つのファイル、挿入。1(+)
MODE 100644 xgp.txtを作成します。

まず、我々はDEVブランチを作成し、その後のdevのブランチに切り替える:
[ルート@ localhostのXGP]#gitのチェックアウト-b devの
新しいブランチ「DEV」に切り替え

Gitlabの展開と応用
-bパラメータを使用してのgit checkoutコマンドには、次の2つのコマンドへの切り替えや対応を示し:
$ Gitの支店DEV
$ gitのチェックアウトDEV
支店「DEV」に交換します

その後、gitのブランチコマンドで現在のブランチを表示:
[ルートを@ localhostのXGP]#gitのブランチ

  • devの
    マスター
    Gitlabの展開と応用

gitのブランチコマンドはすべての枝、先に現在のブランチモノグラムアスタリスクの。

その後、我々は適切xgp.txtが変更されるためのような、行の追加、のdevの枝に出願することができます:
[ルートを@ localhostのXGP]#猫のxgp.txt
111master
Qqqqdveが追加さを

その後提出:
[ルート@ localhostのXGP]#gitの追加xgp.txt
[ルートlocalhostのXGP @]#は、-m "最初DEV"コミットgitの
[DEV eac3426]最初のdevの
変更1ファイル、1挿入(+)

さて、仕事のDEVの分岐が完了すると、我々は戻ってmasterブランチに切り替えることができます:
#gitのチェックアウトマスター[localhostのXGP @ルート]
ブランチにスイッチ「マスター」
Gitlabの展開と応用
マスターブランチに背を切り替えた後、次にxgp.txtファイルを表示、単にコンテンツを追加行って!それはDEVブランチに提出し、マスター分岐点を提出しているため、現時点では変更されていない:
[ルート@ localhostのXGP]#猫のxgp.txtの
111masterを

今、私たちはmasterブランチへのdevの枝の作業の結果を連結している:
[ルートを@ localhostのXGP]#gitのマージのdevの
更新b211b8e..eac3426
早送りの
xgp.txt | 1 +
1ファイルが変更され、1挿入(+)
gitのマージコマンドは、現在のブランチをマージする枝を指定するために使用されます。合併後は、その後、xgp.txtの内容を表示するには、最新のを見ると、DEV分岐はまったく同じである提出することができます。
早送り合併は非常に高速であるので、Gitは、この合併が提出され、現在のDEVを習得するために直接指している「早送りモード」であることを教えてくれる、上記の情報に留意しました。
もちろん、必ずしもすべての合併は、早送り、我々は後に、他の方法と組み合わせることができますについて話します。
合併が完了したら、あなたは安全のdevの枝を削除することができます。


[localhostのXGP @ルート]#はログGitの
コミットeac342633a72b3590a019e4d758f4a60707acda2
著者:ADMIN <ADMINのADMIN @>
日付:木2019年11月14日午前9時18分47秒0800を

第一次dev

コミットb211b8ef636e987166fb4a056fb778020f6518ae
著者:管理者<管理@管理>
日:11月14日(木)午前九時12分11秒2019 0800

第一次提交从master分支

削除のdevの枝
[ルートは、@ localhostのXGP]#のGitのブランチ-d devが
(誰がeac3426)枝はdevの削除しました。

削除、ビューのブランチの後、左側のmasterブランチ:
[ルート@ localhostのXGP]#gitのブランチ

  • 主人

作成、削除、およびタスクを完了するために、Gitのブランチを使用して、マージされたブランチを削除することが奨励され、これはマスターに直接あるので、非常に迅速に枝をマージするので
分岐作業効果と同じであるが、プロセスより安全。
まとめ
Gitの枝の広範な使用を奨励する:
ビューの枝を:gitのブランチは、
ブランチを作成:gitのブランチを<名前>
スイッチブランチ:gitのチェックアウト<名前>は
ブランチを切り替え+を作成します:gitのチェックアウト-b <名前>を
現在のブランチにブランチをマージ:gitのマージ<名>
削除支店:gitのブランチ-d <名前>

Resolveは矛盾する
ことが多いのブランチをマージすることは容易ではない、生活の中ですべての可能性を不幸なものを。
私たちの新しいブランチの開発を継続し、新しいXGPブランチを準備します
。#gitのチェックアウトXGP -b [localhostのXGP @ルート]
新しいブランチ「XGP」にスイッチが
xgp.txt最後の行を変更読み取り:
[localhostのXGP @ルート]# xgp.txt CAT
111masterの
qqqqdveの
追加競合
XGPの枝には提出:
[ルートはlocalhost XGP @]#が追加xgp.txtをgitの
#gitの-mをコミット"XGPの競合" [localhostのXGP @ルート]
[XGP 9a92c8f] XGP競合
変更1ファイル1つの挿入(+)

masterブランチに切り替え:
[XGPはlocalhost @ルート]#Gitのチェックアウトのマスター
スイッチブランチへの'マスター'
[XGPルート@ localhostの]#のCAT xgp.txt
111master
Qqqqdve

代わりに、masterブランチのxgp.txtファイルの最後の行には:
[ルート@ localhostのXGP]#CATはxgp.txt
111master
qqqqdve
バグの競合を追加

提出された:
[ルート@ localhostのXGP]#が追加xgp.txt gitの
[ルートを@ localhostのXGP]#は、 "紛争を提出する1" -mコミットgitの
[マスター43f4ad7] 1提出競合
1つの挿入(+、1つのファイルが変更します )

さて、masterブランチとXGP各支店がそれぞれ新しい提出され、それはこのようになります。
Gitlabの展開と応用
この場合、Gitは「迅速な合併は」唯一の彼らの修正をマージしようとすることができます実行することはできませんが、そのような合併は可能性があり競合がある、我々は試してみてください。
[ルート@ localhostのXGP]#のGitのXGPマージ
には、自動的にxgp.txtマージ
xgp.txtでマージ競合は:コンフリクト(コンテンツ)を
自動マージ、改訂を失敗し、補正結果の競合を提出します。

案の定、紛争!Gitはファイルxgp.txt競合があることを教えてくれる、手動で送信する前に競合を解決する必要があります。gitのステータスは、ファイルの競合私たちに伝えることができます:
#gitのステータス[localhostのXGP @ルート]を

分岐マスターに位置

あなたはまだパスがマージされていません。

(「コミットgitの」コンフリクトを解決し、実行)

マージされていないパス:

(使用 "gitの追加<ファイル> ..." タグソリューション)

当事者は改正:xgp.txtを


変更は、まだ(「gitの追加」を使用して、および/または「-aコミットGIT」)を提出追加しました

我们可以直接查看 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

gitの設定ファイルを変更します
vimの/etc/gitlab/gitlab.rb修正
external_url「http://192.168.1.30」13の#が
再起動し、それを初期化
gitlab-CTLの再構成
再起動gitlab-CTL
ブラウザビューを、長い時間

Gitlabの展開と応用
Gitlabの展開と応用

おすすめ

転載: blog.51cto.com/14320361/2450320