【学习笔记】Git企业级使用—完整流程
前言
大家都知道Git 是进公司的第一门必修课。而博主今天也是把最近在公司所学的Git 知识和一些实战经验分享给大家。同时能够给大家带来一定的帮助。
其他Git相关文章:
Git环境的配置和基础命令
【学习笔记】Git企业级使用—(分支)
【学习笔记】Git企业级使用—(团队协作机制)
GitLab
众所周知,一次企业项目开发离不开团队的合作。在多人编写代码的同时还需要使用远程的 代码仓库 来进行一哥管理和存储。我们熟知的远程仓库有: 全球最大的同性交流网站—Github ,和国内的码云—Gitee 等 这些都是比较不错的远程仓库。
但是这些一般企业都会去使用 Gitlab 。大家可能听上述的Github 和Gitee 这两个比较多,那为什么公司不去选择使用它们呢?而是一般会去使用 GitLab 呢?
其实这个 GitLab 更多在公司开发中用。前面两者都是建立在互联网中的是共享的。而这个 GitLab 是什么呢?他是建立在局域网上的,是可不公开的。
有时候对吧,公司要开发个啥子,不能公开,是商业机密。就在内部建立个局域网上面搭建个 GitLab 只让自己公司员工来开发。
官网地址:GitLab
具体安装流程大家可以自己搜一下啦,在这里就不多赘述了啦。
团队合作流程
切换和创建分支
首先查看当前分支使用 git branch ,查看本地有哪些分支。如果是需要开创新的分支则需要使用git branch xxx 来进行操作。
ps:一般可以在分支的分支来进行创建分支,避免干扰到主分支。
如果本地存在开发分支则需要使用git checkout xxx 来进行一个分支切换命令。
例如:
yodo@DESKTOP-PNDV47D MINGW64 /c/Project/sport (master)
$ git branch
* master
yodo@DESKTOP-PNDV47D MINGW64 /c/Project/sport (master)
$ git branch vg_card
yodo@DESKTOP-PNDV47D MINGW64 /c/Project/sport (master)
$ git checkout vg_card
Switched to branch 'vg_card'
yodo@DESKTOP-PNDV47D MINGW64 /c/Project/sport (vg_card)
合并代码
切换分支后我们需要使用git pull 把远程库中的某个分支合并到本地库中。
一般在合并的过程我们需要登录公司提供的账号和密码,不然无法进行一个合并操作。
例如:
yodo@DESKTOP-PNDV47D MINGW64 /c/Project/sport (vg_card)
$ git pull origin xxxx
remote: Enumerating objects: 11, done.
remote: Counting objects: 100% (11/11), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 11 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (11/11), 35.13 KiB | 97.00 KiB/s, done.
From https://code.17yund.me/root/sport
* branch zwq_refund -> FETCH_HEAD
794a998b8..9c2f62d0a zwq_refund -> origin/zwq_refund
Committer identity unknown
*** 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 'yodo@DESKTOP-PNDV47D.(none)')
yodo@DESKTOP-PNDV47D MINGW64 /c/Project/sport (vg_card)
$ git config --global user.email "@xxxxxx"
yodo@DESKTOP-PNDV47D MINGW64 /c/Project/sport (vg_card)
$ git config --global user.name "xxx"
yodo@DESKTOP-PNDV47D MINGW64 /c/Project/sport (vg_card)
$ git pull origin zwq_refund
From https://code.17yund.me/root/sport
* branch zwq_refund -> FETCH_HEAD
Merge made by the 'recursive' strategy.
xxxx.py | 36 ++++-
xxxxx.py | 93 ++++++------
maxxxxr.py | 234 +++++++++++++++++------------
malxxxxxe.py | 7 +-
malxxxxonfig.py | 6 +
5 files changed, 230 insertions(+), 146 deletions(-)
然后我们能使用该远程仓库的代码进行本地操作了。
代码提交
首先通过 Git BASH 命令行工具输入 git add 文件名 把所需要提交的代码提交到缓存区。
注意: git add . 一般. 代表的是所有文件。
然后使用 git commit -m"备注" 命令先提交到本地仓库。(记住 备注 一定写详细一点,方便以后的改写操作!!!)
那么最后一步就是git push 提交操作,如果没有冲突则就会提交成功。
例如:
yodo@DESKTOP-PNDV47D MINGW64 /c/Project/sport (Kxxxxx)
$ git add libs
warning: LF will be replaced by CRLF in libs/MemcachedAdpterRedis.py.
The file will have its original line endings in your working directory
yodo@DESKTOP-PNDV47D MINGW64 /c/Project/sport (Kxxxxxx)
$ git commit -m"Bxxxxx和Mxxxxxxx工具类的初步测试完成"
[KafkaAndRedis 923cc4611] Bxxxxx和Mxxxxxxx工具类的初步测试完成
5 files changed, 176 insertions(+), 52 deletions(-)
rewrite libs/Mxxxxxxxx.py (89%)
create mode 100644 libs/Txxx.py
create mode 100644 libs/__init__.py
yodo@DESKTOP-PNDV47D MINGW64 /c/Project/sport (Kxxxxx)
$ git push
Enumerating objects: 12, done.
Counting objects: 100% (12/12), done.
Delta compression using up to 4 threads
Compressing objects: 100% (7/7), done.
Writing objects: 100% (7/7), 2.33 KiB | 1.16 MiB/s, done.
Total 7 (delta 3), reused 0 (delta 0), pack-reused 0
remote:
remote: To create a merge request for KafkaAndRedis, visit:
remote: https:xxxxx/xxxx//xxxx/xxxx/xs/new?merge_request%5Bsource_branch%5D=KafkaAndRedis
remote:
To https://xxx/xxx/xx/x/xx/xxrt.git
4d22122b0..923cc4611 KafkaAndRedis -> KafkaAndRedis
冲突的解决
冲突怎么产生的?
首先在团队开发时,一个文件可能会被多个开发者进行操作。多个分支合并到一个分支或者多个分支向同一个远端分支推送代码。
push 的操作本质就是将本地的代码merge 到远程仓库。同理,pull 的操作本质就是将远程仓库的代码merge 到本地。所以在使用这两种操作时,都可能会存在 冲突 。
冲突的解决
在产生冲突后,冲突文件会变成这样:
qwertyuiop
<<<<<<< HEAD
123456789
=======
xzcvbnm,.
>>>>>>> 6853e5ff961e684d3a6c02d4d06183b5ff330dcc
c
其中:冲突标记<<<<<<< 与 ======= 之间的内容是我的修改======= 与 >>>>>>> 之间的内容是别人的修改。
可以根据情况保留修改:
保留自己的: 删除======= 与>>>>>>> 之间的内容,然后删除<<<<<<<
保留别人的: 删除<<<<<<< 与======= 之间的内容,然后删除>>>>>>>
都保留: 删除<<<<<<< 、 ======= 、>>>>>>>
修改完后执行:
git add 冲突文件名
git commit -m "xxx"
git push //直接push就可以了,因为刚刚已经执行过相关merge操作了
- ①、前提条件:不能在
master 上面做任何修改,且master 分支的变动只能通过git pull 和git merge 获得。 - ②、修改自己的
MyBranch 分支内容的修改。 - ③、如果用自己的
MyBranch 分支执行命令git merge origin/master ,把远程的master 分支合并到当前分支中。 - ④、如果没有任何报错,直接跳到第⑤步。如果有冲突,则根据提示,把冲突解决,保存文件。然后进行一个提交。
- ⑤、执行如下命令,切换到
master 分支:git checkout master 。 - ⑥、执行命令
git pull 确保当前master 分支是最新代码。 - ⑦、把
dev 分支的代码合并回master 分支:git merge dev 。 - ⑧、提交代码:
git push 。
撤销合并
如果我们没有解决冲突且想撤销合并,我们可以输入git reset --hard 命令。
这样我们就能安全的撤销合并,并且回到合并前的样子。
git pull与git fetch及git merge与git rebase的区别
可参考本篇文章:文章链接
参考文章: 文章链接
|