Gitlab的使用(内含Git命令大全)

Gitlab的使用(内含Git命令大全)

2023年6月30日发(作者:)

Gitlab的使⽤(内含Git命令⼤全)gitlab使⽤流程标签(空格分隔): gitlab1、前⾔使⽤svn的同学抓(dan)狂(sui)的问题?没有⽹时候想commit怎么办?svn服务器宕机⼀天,技术团队抓狂,抱怨运维不给⼒⾮核⼼成员想贡献⾃⼰的⼒量却⽆论为⼒每每想看⼀下svn上的配置⽂件或者代码,不能在线看,必须下载。这尼玛能忍?顶你个肺的,不能直接下载,必须要要安装个⼩乌龟(svn客户端)。昨天那⼊职的新同事今天尽然离职了,仙⼈板板的,昨天才给他开的svn权限,这下惨了,代码都被他带⾛了。他是不是(⼩⽶)派来(华为)的卧底?第⼀天上班,连上svn,⼀眼望去dcsp,dcp,garfield,bs4api。谁能告诉我这都是什么⿁,有没有个wiki,让我快速上⼿?(⽼员⼯:)svn做codereview不⽅便,安装个reviewboard撒,对了,别忘了开发⼯具中还要安插件才能⽤。(新同事:)什么⿁,⼜要我学新东西?2、svn与git的恩怨情仇2.1 svn与git对⽐.分布式在线阅读存储⽅式完整性离线⼯作分⽀svn不是不⽀持按⽂件⼀般⽇志都没法看分⽀是⼀个完整的⽬录git是不仅⽀持,⽽且可以在线编辑按元数据优完全没问题随意开辟⽆限个分⽀GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),⼯作管理系统等。如果你是⼀个具有使⽤SVN背景的⼈,你需要做⼀定的思想转换,来适应GIT提供的⼀些概念和特征。2.2 Git 与 SVN 区别点:1、 GIT是分布式的,SVN不是:这是GIT和其它⾮分布式的版本控制系统,例如SVN,CVS等,最核⼼的区别。2、GIT把内容按元数据⽅式存储,⽽SVN是按⽂件:所有的资源控制系统都是把⽂件的元信息隐藏在⼀个类似.svn,.cvs等的⽂件夹⾥。3、GIT分⽀和SVN的分⽀不同:分⽀在SVN中⼀点不特别,就是版本库中的另外的⼀个⽬录。4、GIT没有⼀个全局的版本号,⽽SVN有:⽬前为⽌这是跟SVN相⽐GIT缺少的最⼤的⼀个特征。5、GIT的内容完整性要优于SVN:GIT的内容存储使⽤的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和⽹络问题时降低对版本库的破坏。2.3 svn与git⼯作流程2.3.1 svn⼯作流程 2.3.2 git⼯作流程2.3.3 快速理解svn与git的本质区别从上图中可以看出,svn是集中式的,git是分布式的。仔细看图会发现其实git的⼯作模式下每个开发者(安装了git客户端)的电脑就等同于传统的⼀个svn服务器。这也就是为什么说他是分布式的原因。对于初学者,需要理解svn⼯作模式下commit后⼯具基本完毕,其他⼈可以下载你的代码。但是在git下commit后还需要你push⼀下,这也是有使⽤svn背景的⼈需要做思想转变的地⽅。2.4 Git ⼯作区、暂存区和版本库2.4.1 基本概念⼯作区:就是你在电脑⾥能看到的⽬录。暂存区:英⽂叫stage, 或index。⼀般存放在 ".git⽬录下" 下的index⽂件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。版本库:⼯作区有⼀个隐藏⽬录.git,这个不算⼯作区,⽽是Git的版本库。2.4.2 ⼯作区、版本库中的暂存区和版本库之间的关系

3、gitlab的使⽤gitlab抄的github,GitLab拥有GitHub拥有的⼀切,但他拥有更多1. ⾮常便捷的⽤户界⾯,在同⼀界⾯上获取到:projects,最近的projects,⽤户,最近的⽤户,群组和状态;2. 允许设置仓库权限是公⽤的还是私有的;3. “Snippet support”让⽤户分享⼀个project的部分代码,⽽不是整个project。4. 受保护的分⽀是⼀种提升代码安全性的新⽅法,它们允许⽤户设置project的获取权限,所以⼀个团队中只有特定的⼈可以push,force,push或者删除⼀个分⽀的代码。5. Authentication levels更进⼀步的提升安全性,允许⽤户给⼈读写以外的权限。举例来说,你可以给⼀个组员跟踪变动的权限却不给他获取代码的权限。6. 你可以设置获取到团队的整体的改进进度,⽽不是你个⼈的进度。7. 开发者通过打上“仍在进⾏中”状态标签让其他成员知道代码没有完成,从⽽阻⽌未完成的代码合并到其他的代码中8. “innersourcing”公司的资源如果员⼯不再权限范围内,将不知道这个资源的存在。3.1 使⽤前的准备⼯作3.1.1 注册登录1、访问,没有账号请⾃⾏注册,填写登陆名、密码、邮箱(真实存在的)。2、查收激活邮件,点击激活。3、登录。详情请参考3.1.2 个性设置3.1.3 安装git客户端此处不做限制,安装或者均可。普通⼈员(不常⽤与开发,只是浏览代码)可以不⽤安装客户端,在线即可浏览、下载、批注⽂件。安装⽅法:双击。3.2 项⽬使⽤3.2.1 新建项⽬3.2.2 初始化项⽬(git init)正如上图显⽰的,gitlab会给我们相应的命令供我们使⽤(需要安装客户端)。初始化⼀个项⽬可以是⼀个新建的空项⽬,也可以是⼀个已经存在的⽂件夹或者项⽬,当然也可以从其他(github,其他公司的gitlab)上导⼊。本⽂主要讲将已有的svn项⽬导⼊到gitlab。将⼀个已有的项⽬或者⽂件夹托管到git的流程:⽅法⼀(⾮命令):1、新建项⽬,如上图3.2.1,在gitlab服务端建相应的项⽬。2、添加.gitignore、⽂件3、在⽂件夹下,右击⿏标,git init here,初始化⼯作空间4、继续右击⿏标,git add all files now ,加⼊到索引(暂存区)5、继续右击⿏标,git commit ,填写提交说明6、继续右击⿏标,git gui——>远端(remote)——>填写远程项⽬路径7、继续右击⿏标,右下⾓上传。⽅法⼆(命令⾏):1. 新建项⽬,如上图3.2.1,在gitlab服务端建相应的项⽬。2. 添加.gitignore、⽂件3. 在⽂件夹下,右击⿏标,git bash4. 复制gitlab上的命令到gitbash命令窗⼝,回车5. ⼤功告成。⼤家根据⾃⼰的喜好选择合适的⽅式。此处给出⽤命令的操作demo。

3.2.3 从gitlab下载代码3.2.3.1 下载zip、gz、gz、tar格式的代码包闲话少说,直接上图

3.2.3.2 ⽤开发⼯具下载源码闲话少说,直接上图

3.2.4 新建分⽀开发代码为什么要新建分⽀?因为master被强制保护起来了,也就是说要想合并代码到master,必须让有master权限的⼈帮你审核代码,然后才能合并到master

3.2.5 提交代码本地提交(commit)与服务器提交(push)

3.2.6 发送代码合并请求上⾯操作完成后你的代码终于提交到gitlab服务器了,被⼈也可以看到你的代码了。但是,你的代码在临时分⽀,并没有合并到master分⽀。刚才push⾃⼰给⾃⼰检查代码,显然知识掩⼈⽿⽬(呵呵哒,⼤家⼼知肚明),这时需要发起请求让你的组长或者同组的其他⼈员帮你检查代码。闲话少说,图归正传。

3.2.7 打tag每次上线后,我们需要为这次上线的版本打上标记tag,以便于备份使⽤。 3.2.8 其他功能常⽤的⼏个地⽅,稍微提⼀下。有图有真相。

4、Git常⽤操作命令4.1 远程仓库相关命令检出仓库:$ git clone git:///jquery/查看远程仓库:$ git remote -v添加远程仓库:$ git remote add [name] [url]删除远程仓库:$ git remote rm [name]修改远程仓库:$ git remote set-url --push [name] [newUrl]拉取远程仓库:$ git pull [remoteName] [localBranchName]推送远程仓库:$ git push [remoteName] [localBranchName]如果想把本地的某个分⽀test提交到远程仓库,并作为远程仓库的master分⽀,或者作为另外⼀个名叫test的分⽀,如下 :$git push origin test:master // 提交本地test分⽀作为远程的master分⽀$git push origin test:test // 提交本地test分⽀作为远程的test分⽀4.2 分⽀(branch)操作相关命令查看本地分⽀:$ git branch查看远程分⽀:$ git branch -r创建本地分⽀:$ git branch [name] ----注意新分⽀创建后不会⾃动切换为当前分⽀切换分⽀:$ git checkout [name]创建新分⽀并⽴即切换到新分⽀:$ git checkout -b [name]删除分⽀:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分⽀,对于未有合并的分⽀是⽆法删除的。如果想强制删除⼀个分⽀,可以使⽤-D选项合并分⽀:$ git merge [name] ----将名称为[name]的分⽀与当前分⽀合并创建远程分⽀(本地分⽀push到远程):$ git push origin [name]删除远程分⽀:$ git push origin :heads/[name] 或 $ gitpush origin :[name]

创建空的分⽀:(执⾏命令之前记得先提交你当前分⽀的修改,否则会被强制删⼲净没得后悔)**$git symbolic-ref HEAD refs/heads/[name]$rm .git/index$git clean -fdx4.3 版本(tag)操作相关命令查看版本:$ git tag创建版本:$ git tag [name]删除版本:$ git tag -d [name]查看远程版本:$ git tag -r创建远程版本(本地版本push到远程):$ git push origin [name]删除远程版本:$ git push origin :refs/tags/[name]合并远程仓库的tag到本地:$ git pull origin --tags上传本地tag到远程仓库:$ git push origin --tags创建带注释的tag:$ git tag -a [name] -m 'yourMessage'4.4 ⼦模块(submodule)相关操作命令添加⼦模块:$ git submodule add [url] [path] 如:$git submodule add git:///soberh/ src/main/webapp/ui-libs初始化⼦模块:$ git submodule init ----只在⾸次检出仓库时运⾏⼀次就⾏更新⼦模块:$ git submodule update ----每次更新或切换分⽀后都需要运⾏⼀下删除⼦模块:(分4步⾛哦) 1) $ git rm --cached [path] 2) 编辑“.gitmodules”⽂件,将⼦模块的相关配置节点删除掉 3) 编辑“ .git/config”⽂件,将⼦模块的相关配置节点删除掉 4) ⼿动删除⼦模块残留的⽬录4.5 忽略⼀些⽂件、⽂件夹不提交在仓库根⽬录下创建名称为“.gitignore”的⽂件,写⼊不需要的⽂件夹名或⽂件,每个元素占⼀⾏即可,如下:# Maventarget/../targettarget/**.class*.ser*.ec# IntelliJ /out/*.ipr*.iws*.iml# gs/.metadata/# OS _Store4.6Git常⽤命令汇总git branch 查看本地所有分⽀git status 查看当前状态

git commit 提交

git branch -a 查看所有的分⽀git branch -r 查看本地所有分⽀git commit -am "init" 提交并且加注释

git remote add origin git@192.168.1.119:ndshowgit push origin master 将⽂件给推到服务器上

git remote show origin 显⽰远程库origin⾥的资源

git push origin master:developgit push origin master:hb-dev 将本地库与服务器上的库进⾏关联

git checkout --track origin/dev 切换到远程dev分⽀git branch -D master develop 删除本地库developgit checkout -b dev 建⽴⼀个新的本地分⽀devgit merge origin/dev 将分⽀dev与当前分⽀进⾏合并git checkout dev 切换到本地dev分⽀git remote show 查看远程库git add .git rm ⽂件名(包括路径) 从git中删除指定⽂件git clone git:///schacon/ 从服务器上将代码给拉下来git config --list 看所有⽤户git ls-files 看已经被提交的git rm [file name] 删除⼀个⽂件git commit -a 提交当前repos的所有的改变git add [file name] 添加⼀个⽂件到git indexgit commit -v 当你⽤-v参数的时候可以看commit的差异git commit -m "This is the message describing the commit" 添加commit信息git commit -a -a是代表add,把所有的change加到git index⾥然后再commitgit commit -a -v ⼀般提交命令git log 看你commit的⽇志git diff 查看尚未暂存的更新git rm a.a 移除⽂件(从暂存区和⼯作区中删除)git rm --cached a.a 移除⽂件(只从暂存区中删除)git commit -m "remove" 移除⽂件(从Git中删除)git rm -f a.a 强⾏移除修改后⽂件(从暂存区和⼯作区中删除)git diff --cached 或 $ git diff --staged 查看尚未提交的更新git stash push 将⽂件给push到⼀个临时空间中git stash pop 将⽂件从临时空间pop下来git remote add origin git@:username/ push origin master 将本地项⽬给提交到服务器中git pull 本地与服务器端同步git push (远程仓库名) (分⽀名) 将本地分⽀推送到服务器上去。git push origin serverfix:awesomebranchgit fetch 相当于是从远程获取最新版本到本地,不会⾃动mergegit commit -a -m "log_message" (-a是提交所有改动,-m是加⼊log信息) 本地修改同步⾄服务器端 :git branch branch_0.1 master 从主分⽀master创建branch_0.1分⽀git branch -m branch_0.1 branch_1.0 将branch_0.1重命名为branch_1.0git checkout branch_1.0/master 切换到branch_1.0/master分⽀du -hs-------------------举个栗⼦-----------------------mkdir WebAppcd WebAppgit inittouch .gitignoregit add .gitignoretouch READMEgit add READMEgit commit -m 'first commit'git remote add origin git@:application/ push -u origin master4.7 GIt命令记忆图

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688079095a77191.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信