【学习笔记】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的区别
可参考本篇文章:文章链接
参考文章: 文章链接