sourcetree怎么把文件上传到gitlab服务器
有的网友还不太了解文件上传到gitlab服务器的操作,接下来就讲解关于sourcetree上传文件到gitlab服务器操作方法,感兴趣的小伙伴们一起学习一下吧!
首先本地新建一个仓库
选择创建新仓库选项
然后选择本地目标路径,后单击创建选项
仓库建立完成后将该仓库的文件进行暂存区块
sourcetree|
OS:CentOS 72
Git:1831
备份模式:
以下步骤以双机备份为例,单机备份同理,只是在镜像git项目的时候把git url换成单机中的git项目目录即可。
首先,查看系统软件库中是否有git和git的版本:
CentOS 72环境下的输出如下:
CentOS 7x版本的仓库中已经附带了1831版本的git,可以直接安装。
CentOS 6x中的git是17x版本,自带库中git版本低的linux发行版可以添加git1831的源来安装git,但这个操作要求本机能访问互联网
其他版本的git理论上也可以,请自行测试
结果最后显示“安装完成”或“Complete”表示安装成功。可以直接使用git命令测试一下:
输出如下表示git安装成功并可用。
创建一个git用户,用来提供给外部用户以git url的方式访问git库。
在用户目录或其他对外目录中创建 /git/repos 目录,用来存放git库。
注意: 尽量使用git用户来创建该目录,方便以后git操作该目录,如果是使用其他用户创建的,记得使用以下命令将该目录的owner改为git:
为了方便访问,可以在根目录下创建一个软链连接到该目录:
这样设置后,假如以后有一个库叫 testgit ,那么就可以通过以下url来访问git库了:
创建一个测试库用来测试备份及连通性。
同主GIT服务器的《安装git》章节。
同主GIT服务器的《创建git库目录》章节。
目录结构尽量与主git服务器上的结构一致,如果不一致,使用软链的形式将git url配置为与主git服务器一致,这样保证在切换服务器时,客户端不用做修改操作。
以上个步骤中创建的 testgit 为例:
这样,主git服务器中的 testgit 就镜像到备份机中了。
如果主服务器的git项目发生了变更,可以将变更同步到备份机。
将以上同步命令写成脚本,添加一个定时任务来定时同步即可。
(待补充)
备份同步时每次都需要输入主git服务器的密码,比较麻烦,也不利于定时同步的脚本操作,可以使用ssh免密登录的方式,在主服务器上配置备份服务器的公钥。
一路Enter(回车键),完成后会打印出密钥的生成位置,通常在用户主目录的 ssh 目录中。默认情况下会生成以下两个文件:
一定要注意上述命令中的第三步,权限要设置对,否则认证不过去不能免密登录。
如果在实际运行中,主git服务器挂了一段时间,在这段时间里一直是备份git服务器在工作,那么在修复好主服务器后需要将这一段时间的变更同步回主服务器。
操作完成后备份库自上一次同步后的更改都推送到了主库。
代码提交
代码提交一般有五个步骤:
1查看目前代码的修改状态
2查看代码修改内容
3暂存需要提交的文件
4提交已暂存的文件
5同步到服务器
1 查看目前代码的修改状态
提交代码之前,首先应该检查目前所做的修改,运行git status命令
a) 已暂存 (changes to be committed)
new file //表示新建文件
modified //表示修改文件
deleted //表示删除文件
b) 已修改 (changed but not updated)
modified //表示修改文件
deleted //表示删除文件
另外,git 给出了可能需要的操作命令,git add/rm, gitcheckout --
c) 未跟踪 (untracked files)
2 查看代码修改的内容
git diff <file>
比较某文件与最近提交节点的差异。
注意:如果该文件已暂存,那么应该使用git diff –cached<file>
git diff <hashcode> <hashcode> <file>
比较某文件在提交节点a,节点b的差异。
技巧:如果省略后面一个hashcode,则默认表示与上一提交节点比较。(也可以利用^运算符)
3 暂存需要提交的文件
如果是新建的文件
则git add <file>
如果是修改的文件
则git add <file>
如果是删除的文件
则 git rm <file>
4 提交已暂存的文件
git commit
注意注释填写规范。
git commit --amend
修改最近一次提交。有时候如果提交注释书写有误或者漏提文件,可以使用此命令。
5 同步到服务器
同步到服务器前先需要将服务器代码同步到本地
命令: git pull
如果执行失败,就按照提示还原有冲突的文件,然后再次尝试同步。
命令:git checkout -- <有冲突的文件路径>
同步到服务器
命令: git push origin <本地分支名>
如果执行失败,一般是没有将服务器代码同步到本地导致的,先执行上面的git pull命令。
流程:通常是从gitlab/github拉取项目,构建,把产出文件发到服务器。
一、环境
创建任务之前,要先配置两项:
问题1:jenkins credentials配置SSH
系统管理 -> Manage Credentials -> 全局凭据 (unrestricted) ->添加或者编辑
注意:这里的key是个大坑,最开始我纠结是填私钥还是公钥,发现粘贴进去都不对。(粘贴私钥时我粘贴的是正文,没有复制首尾两行,导致一直报错。)最后把私钥整个粘贴进去就对了。
原因:
由于Jenkins的安全策略配置了CSRF跨站点保护。
解决方案:
进入Jenkins,系统管理-->全局安全配置,勾选匿名用户具有可读权限和去掉CSRF防止跨站点请求伪造:
在 /configure 下
这个插件是jenkins连接linux系统的时候使用。
以下针对插件的每个属性进行说明。
Name
SSH Server的Name属性就是你希望连接的服务器。
Source files
这里输入的是你希望传到服务器的文件夹和文件。路劲是相对jenkins的workspace的项目名称的。例如编译打包后的路径为dist文件夹下的jenkinsziptargz,则Surce files填入dist/jenkinsziptargz。
Remove prefix
如果Source files为dist/jenkinsziptargz,但是不想把dist目录创建到服务器端,这个时候就可以在Remove prefix里填入dist
Remote directory
这里指定文件将被拷贝到服务器的路径。
PS:被拷贝文件在服务器上的完整路径=登录服务器账号的默认路径(就是全局设置的Remote Directory)+当前任务配置的Remote directory。
例如我的服务器路径是 /home/wwwroot/aaa
我全局配置Remote Directory 是 /home/wwwroot
当前任务配置的Remote Directory 是 /aaa/
Exec command
这里就是连接服务器之后需要执行的命令。
注意:这里配置的Secret token和 webhook要填写到gitlab里面,路径如下:
参考文章: https://blogcsdnnet/hou_ge/article/details/103507947
众所周知,版本系统在开发环境中是必不可少的,但是我们可以把代码免费的托管到GitHub上,如果我们不原意公开项目的源代码,公司又不想付费使用,那么我们可以自己搭建一台Git服务器,可以用Gitosis来管理公钥,还是比较方便的。
搭建环境:
服务器 CentOS66 + git(version 1831)
客户端 Windows10 + git(version 2111windows1)
1 安装Git相关软件
Linux是服务器端系统,Windows作为客户端系统,分别安装Git
安装客户端:
下载 Git for Windows,地址:https://git-for-windowsgithubio/
安装完之后,可以使用Git Bash作为命令行客户端。
安装Gitosis
出现下面的信息表示安装成功了
2 服务器端创建git用户来管理Git服务
3 配置公钥
在Windows上配置管理者,git服务器需要一些管理者,通过上传开发者机器的公钥到服务器,添加成为git服务器的管理者,打开git命令行
4 配置gitosis
使用git用户并初始化gitosis
在Windows上机器上clone gitosis-admin到管理者主机
gitosisconf: git服务器配置文件
keydir: 存放客户端公钥
配置 gitosisconf 文件
在Windows管理者机器上创建本地test仓库,并上传到git服务端
提交到远程服务器
服务端会自动创建test仓库
5添加其他git用户开发者
由于公司开发团队人数不断增多,手动添加开发者私钥到/home/git/ssh/authorized_keys比较麻烦,通过上面的Windows机器的管理者统一收集其他开发者的私钥id_rsapub文件,然后传到服务器上,配置好后,用户即获得项目权限,可以从远程仓库拉取和推送项目,达到共同开发项目。
推送完成后,新加进来的开发者就可以进行项目的开发了,后续增加人员可以这样添加进来,开发者直接把仓库clone下来就可以了。
有一个项目一直是再我们localhost服务器A下使用的git做的开发。最近需要搬移到线上的服务器B上。
目的:要保留原有的所有的开发记录。
一开始,我准备是直接clone一份最新的,然后以这个为原始版本开创建,发现这个是不可取的。
最后想到的一个办法就是,登陆到A上面,切换到git用户组,使用scp将整个repositories下的项目目录copy到服务器B的git repositories下。那样就能保留原有的文件所有者规git所有。然后在服务器B上创建一个跟刚才copy过去的项目。就可以直接在本地使用B服务器上的git地址进行开发了。
如果您是使用的别人的git仓库,比如github。那就看看下面这篇我在网上找的文章:
如果你想从别的 Git 托管服务那里复制一份源代码到新的 Git 托管服务器上的话,可以通过以下步骤来操作。
1) 从原地址克隆一份裸版本库,比如原本托管于 GitCafe。
git clone –bare git@gitcafecom:username/projectgit
2) 然后到新的 Git 服务器上创建一个新项目,比如 GitHub。
3) 以镜像推送的方式上传代码到 GitHub 服务器上。
cd projectgit
git push –mirror git@githubcom:username/newprojectgit
4) 删除本地代码
cd
rm -rf projectgit
5) 到新服务器 GitCafe 上找到 Clone 地址,直接 Clone 到本地就可以了。
git clone git@githubcom:username/newprojectgit
这种方式可以保留原版本库中的所有内容。
Java8种值得学习优秀技能
1 Git
Git 是 Java 开发人员需要掌握的基础工具之一,每一位 Java 从业者都应该学会用它。Git 使用一套版本控制系统来管理各种项目集合。这是一个完全免费的开源系统,专注干非线性工作流、完整性和速度。分布式扩展:存储库可用来创建开发历史的副本。链接方法: Git 具有基于工具箱的设计,可提供定义明确的模型。
基干工具箱的设计:基于工具箱的设计可减少复合组件。
分布式扩展: 存储库可用来创建开发历史的副本。链接方法:Git 具有基于工具箱的设计,可提供定义明确的模型。
基干工具箱的设计:基于工具箱的设计可减少复合组件。
2Selenium
Java 中的 Selenium Web 驱动程序是 Java 开发人员在 2021 年应该了解的重要技术之一。
Selenium 提供了使用测试框架测试 Web 应用程序的一组工具; Selenium Web 驱动提供了一个开源API。它包括了用于 Web 应用程序的一些自动化特性。Selenium 的关键元素包括:
IDE(集成开发环境)
远程控制 /Selenium10
Web 控制器 /Selenium20/30
Selenium网格
3Jenkins
Jenkins 是源自 JAVA 编程的技术,其开源自动化的持续交付和集成可以自动化软件开发流程,支持多种版本控制工具。
Jenkins的插件可与另一种语言编写的代码集成。以下是你应该选择 Jenkins 的三大原因: 它提供了比其他软件更好的质量;其自动化系统可以管理集成;Jenkins的开发速度要快得多。
4用户友好的 Web 服务
REST 的全称是Representative Translation ofState(表述性状态转移),它代表了一种架构风格,是Java 开发人员必须掌握的知识。它提升了 Web 服务性能,还定义了可伸缩性和性能约束。这是 2022年Java 开发人员最理想的选项之一。
它的可重建 API用于 Web 服务开发中的通信需求。如果你了解 HTML、CSS 等,那么你将从RESTfulWeb 服务中获益匪浅。以下是 RESTful 服务的特性:
基干客户端 - 服务器的架构提供了服务器的管理、部署和托管等特性,还可以帮助用户使用服务和资源。它本质上是一种共享资源的共享计算模型。
5 Spring security
它的主要功能是应用程序身份验证。其 J2EE servlet规范和 EJB规范是JAVA 开发人员常用的两个关键安全特性。
Spring Security 支持多种身份验证模型,并与HTTP、Kerberos、JOSSO、CAS、LDAP 等技术集成。Spring Security 与 Java 深度关联,强烈建议Java 开发人员学习它。
6SpringBoot2
Spring Boot 发布了一个名为 Spring Boot 2的新版本。其中 Spring 框架负责控制,Spring Boot 负责生成具有常规配置的独立解决方案。
它主要依赖JAVA Baseline、BOM 材质和 cradle插件,其自动配置可提供安全性和响应性。它还提供了技术支持并改善了开发体验。它是 JAVA 程序员应了解的基本工具之一,其关键特性包括:
直接部署 Undertow、Jetty 或 Tomcat
减少构建配置,提供依赖项
在 Spring 中创建独立的应用程序
7Angular 或响应式 JS
ReactJS 是一个专门用于 UI开发的 JavaScript库,而 Angular 是一个框架。JAVA 开发人员应该很熟悉这两大关键技术了。微信搜索readdot,关注后回复编程资源,领取各种经典学习资料
Angular 2是开源 We 应用程序框架,Angular 的主要特性包括指令、范围、模板、注解、高级依赖项注入和子路由器: ReactJS 用于开发移动应用程序。ReactJS的主要特性包括与服务器的免费开源侧通信功能等。
8ApacheSpark 和 Kafka
Apache Spark 和 Kafka 是2021年Java开发人员一定要掌握的两项技术;它们在 2018 年底已发布稳定版本。Apache Spark 是用于集群计算的框架已开源。
Spark 提供了用于执行基本 1/0、调度和分派等任务的应用程序接口,并提供了同样开源的流处理平台。特别要提的是 Apache Kafka 代码是 Java 和 Scala 编写的。
Kafka 可以使用一些基本 API,例如 Producer APIConsumer APl、Connector API 和 Stream APl。
扩展参考:Jenkins+Gitlab通过脚本自动部署回滚web项目至集群
1):Gitlab服务器:ubuntu 192168152131 ---参考搭建:Linux安装gitlab,docker安装gitlab教程
2):Jenkins服务器:ubunu 192168152130 ---参考搭建:linux安装Jenkins,或docker安装Jenkins教程
在服务器上生成ssh-keygen,用于配置web服务器和Gitlab服务器。
3):web服务器:centos 192168152150 ---已搭建好LNMP环境
4):开发者电脑:Windows+key密钥 (用于提交代码)
1:在gitlab创建项目Test Project
21): 配置一个开发者电脑的ssh公钥到gitlab
配置一个开发者电脑的ssh公钥到gitlab,这样才能模拟开发上传代码到gitlab。
windows生成key过程及git安装,可参考:Windows下git和github的使用图文详细教程_the丶only的博客-CSDN博客_github win
在windows测试clone,和提交代码。
注:最新版git 已经将默认分支master改为main了。所以看到main,而不是master不要太奇怪
测试成功,在gitlab也显示有indexhtml文件。
22): 配置jenkins公钥到gitlab
同理,同样需要jenkins公钥,因为jenkins也需要拉去gitlab的代码。
在 jenkins服务器 上查看公钥并复制添加到gitlab,并命名为jekins。
1:插件管理,安装插件
jenkins本身没什么功能,主要是依靠插件来实现各种强大的功能。
基本需要添加的插件:Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication、Gitlab、Git Parameter
可以在 Manage Jenkins >> Manage Plugins 查看管理插件。在Available 选项搜索安装插件即可。
安装完成后,重启Jenkins。
2:添加需要部署的web主机
在 Manage Jenkins >> Configure System 中往下翻,找到 Publish over SSH 选项,点击add ssh server。
在Jenkins服务器上,查看私钥,注,是私钥,不是公钥。
将私钥填写在key位置,还有添加web服务器相关信息。
注:如果测试报错如下
Failed to connect or change directory
jenkinspluginspublish_overBapPublisherException: Failed to add SSH key Message [invalid privatekey: [B@2e54414f]
是因为默认用ssh-keygen命令,默认生成了OPENSSH 格式密钥。而Jenkins暂时不支持这种私钥,私钥开头结尾如下:
所以,需要生成rsa密钥格式的。用开头说的ssh-keygen加其他参数生成即可。
私钥开头结尾如下:
再次测试,显示success,则成功。然后点击save保存即可。
3:构建任务项目
首页创建任务或者一个项目
命名为web-project,选择为freestyle project 自由项目。然后ok确认。
31):源码管理 Source Code Management
选择源码管理,添加gitlab的项目clone地址。
注:最后路径选择分支,我gitlab主分支名字为main,如果是master,则写master,或者合并的其他分支。
在add添加用户
添加完成后,选择git用户,这时没有红色提醒,说明已成功连接
32):构建触发器 Build Triggers
现在Build Triggers,勾选build when,其他默认,并记下链接 http://192168152130:8080/project/web-project
点击高级 advance 选项。
勾选filter branches regex选择,填写分支,生产token。其他默认
33):构建 Build
选择Build 选项。选择ssh
添加web服务器
添加完毕,最后save保存。
1:添加钩子webhooks
选择自己的项目Test Project,在设置setting里,选择钩子webhooks
填写刚才记下的http://192168152130:8080/project/web-project和token值。
最后Add webhook完成:
2:如添加失败,报错,更改Network
注:如填写失败提示Url is blocked: Requests to the local network are not allowed
还需更改Network选项。
3:测试钩子
添加完成后,下面会出现钩子选择。点击test中的,push event。
出现successful,即添加成功。
在Jenkins也可以看到刚才的测试时间信息。
在开发电脑上测试提交,我这里为Windows电脑测试。
打开Git Bash,输入以下命令:
提交成功,回到Jenkins,查看是否构建成功:
绿色显示构建成功,无错误显示。回到gitlab查看项目。
时间显示刚才也提交成功,无错误。最后在浏览器输入web地址测试,本人配置了web访问端口8082。所以输入IP加端口访问。
内容也已经自动更新成功。
完结撒花!!!
0条评论