使用 Git 命令去管理项目的版本控制(二)
wptr33 2025-10-19 13:53 29 浏览
参考 上一篇完成本篇博客,本篇为作者原创,仅供学习参考。
本篇博文在上一篇的基础上这里记录了我的一个小模拟练习。本篇作为自己的学习笔记,也意在方便其他人的学习使用,达到分享目的。下面主要是操作截图参考cankao参考
首先这里我要重点说明一下:git 与 svn 的区别,git 是分布式的管理服务器,一个很好的应用就是 gitHub 网站。是 Linux 内核开源的作者使用27天时间编写成功的,是不是非常牛逼(参考)。svn 是一个集中式的服务器。集中式的服务器对网络的要求比较大,如果没有网络,他就不能很好地为我们服务,这也是我为什么要分享一下git的使用的原因之一。但是较大的公司一般还是出于保密不会使用第三方的托管工具,他们一般都会有自己的内网和代码管理工具。git能够在没有网络的情况下完成对版本的回复,提交修改源码,仅仅在同步服务器的时候需要网络(将本地的服务器仓库副本上传到公司的服务器原本中)。
首先建立以下文件夹,下面默认已经打开显示隐藏文件(这个请参照上一篇中的命令)注意,下面出现的中文文件夹,没有试验成功,需要修改为英文的名字,这样就能够进行了提交版本等等实验。由于截屏要花费时间,所以下面的博文,从不能实现的地方我进行了修改了英文,前面的重点是一些操作步骤。
将初始化 服务器数据仓库 为远程仓库(就是我们Project要托管的地方),打开终端,输入命令如下:
经理需要在 项目经理 文件夹中 克隆服务器仓库副本到本地 ,然后再创建工程框架,创建一份滤过性说明文件 .gitignore ,最后将创建好工程框架的数据仓库副本推送到服务器仓库(push),截图如下:
在终端中找到路径为 项目经理/数据仓库 的路径,然后为该服务器副本仓库配置用户名,邮箱,然后添加一个工程到副本内部,注意:滤过文件(.gitignore)与(.git)还有 工程文件 三个在同一级目录(服务器副本文件夹)中。下面省去了用户名,邮箱配置,截图如下:
下面是将上面做好的工作,推送到公司服务器仓库中:
程序员张三,去从公司服务器仓库 得到整个项目:
下面假设李四 和 王五 都做了上面的步骤,这样 三四五都开始编码了,第一天开工了:
张三工作,张三打开从服务器上克隆下来的工程文件,开始了自己的编码,编码一天了,开始提交自己的工作到公司服务器。
点击 Xcode菜单栏上的source control -> commit 进行提交
commit 的时候 顺便再勾选一下左下角的 push to remote
经理晚上要看看张三这个人,这一天的任务量是否完成
点击 Xcode菜单栏上的source control -> pull 进行更新
在pull的时候遇到错误如下:
可以这样的解决:
点击 Xcode菜单栏上的source control -> Discard All Changes 进行将以前的更新撤销,然后再从服务器拉取更新就OK了
做到这里居然张三提交到服务器的内容,对张三、经理、其他人都不能pull下来。这里我仔细检查了半天,都没有问题啊,原因是我采用了中文的名字,在生成路径的时候,非常的容易出错,导致系统不能认出来了,所以以后还是要写成字母为好。下面我又新建的文件,开始继续上面的操作。
注意,user.anme user.email 是必须写的,不然在提交代码的时候会给出警告,不能提交,这里如果忘了,可以在终端输入设置用户名和用户邮箱的命令。
这一次我快速的创建了字母的格式的文件夹,就好了,解决了上面的问题。那么下面我就要基于我字母格式文件夹来模拟操作了。
好了下面的模拟很简单,文件名字也很简单(经理-jl,张三-zs ,王五-ww ,公司远程服务器-sever)
下面模拟王五开始干活,在工程中操作:
接下来,王五提交任务到服务器
由于缺少用户名与邮箱,上传到服务器的时候,如下:
解决办法:
现在就可以了,提交之后。jl打开然后pull 就可以看到ww(王五)做了什么工作了。
经理要的操作:打开工程-Source Control ->pull....
次日,张三来的很早,第一件事就是从服务器上down一份最新的工程代码
下载之前:
下载之后:(pull)
致此,已经模拟了项目经理上传框架,员工下载框架,员工上传自己的任务、经理下载查看任务完成情况。
以后我还陆续更新,分支的使用,感觉写博客是一件费时的事情,但是呢也有收获,自己能够再一次的学习理解,分享,还能在遗忘的时候快速回顾。
假设这时候公司来了一个新的员工叫 wm(王麻子)
公司第一次给新人的是一个公司服务器仓库的副本
所以就要求项目经理创建一下新人服务器的远程仓库
a、创建一个远程仓库文件夹 并初始化 git init —bare
b、有项目经理操作:操作流程:Xcode -> source control -> 主仓库-master -> configure 主仓库 -> Remotes -> 左下角+ 添加一个新人服务器地址 -> 填完用户名和地址之后 done
c、向新人服务器里面添加项目
项目经理->Xcode->source control->push->新人服务器地址里面
我们建立一个文件夹,模拟一下经理创建的 新人服务器的远程仓库:
输入命令设置用户名,用户邮箱,不然后期没有办法操作。
添加一个新人折腾用的服务器。
注意下面经理要push 到 我们的新人捣蛋折腾服务器哦
经理 push新人使用服务器工程 成功
新人从项目经理那边拿到新人服务器的地址,开始clone,并开发。
新人已经从折腾服务器中clone 了工程
新人这时候自己玩吧
公司经理分配任务:(让王五(ww)来修复 1.0版本的 bug ,让张三(zs)来开发项目1.1版本,新人(xr)负责瞎捣蛋,经理(jl)负责检查上面员工的进度)这时候经理(jl)在将系统打好版本标记 v1.0 v1.1 如下:
经理找来王五开始修改v1.0的bug
王五应该拿到贴有1.0标签的这个版本的项目
(经理修改或者切换自己的版本为1.0版本,然后push 1.0版本到服务器,王五从服务器 pull下来,并创建分支然后切换到创建的分支,注意看 “常见命令”)
git checkout -b xiugaiBug
这时候,王五pull之后,bug修改好了,要提交到主分支并与之合并,可以 Xcode ->Souce Control ->xiugaiBug->Merge into Branch.... 然后一步一步确定Ok
最后 张三从服务器 pull 一份,可以看到里面修改好了bug 。
创建分支: $ git branch mybranch 切换分支: $ git checkout mybranch 创建并切换分支: $ git checkout -b mybranch 更新master主线上的东西到该分支上:$git rebase master 切换到master分支:$git checkout master 更新mybranch分支上的东西到master上:$git rebase mybranch 提交:git commit -a 对最近一次commit的进行修改:git commit -a –amend commit之后,如果想撤销最近一次提交(即退回到上一次版本)并本地保留代码:git reset HEAD^ 合并分支:(merge from) $ git checkout master $ git merge mybranch (merge from mybranch) 删除分支: $ git branch -d mybranch 强制删除分支: $ git branch -D mybranch 列出所有分支: $ git branch 查看各个分支最后一次提交: $ git branch -v 查看哪些分支合并入当前分支: $ git branch –merged 查看哪些分支未合并入当前分支: $ git branch –no-merged 更新远程库到本地: $ git fetch origin 推送分支: $ git push origin mybranch 取远程分支合并到本地: $ git merge origin/mybranch 取远程分支并分化一个新分支: $ git checkout -b mybranch origin/mybranch 删除远程分支: $ git push origin :mybranch rebase: $ git checkout mybranch $ git rebase master (rebase from master) 举例: $ git checkout server $ git rebase –onto master server client $ git checkout master $ git merge client (fostforward) $ git rebase master server (checkout sever) $ git merge server $ git branch -d client $ git branch -d server
View Code 常见命令
(Over 版本控制仅仅是很浅的学习到这里,以后还要继续学习git的知识,这篇博文话费时间最久,决定以后要减少写博客的时间)由于个人使用习惯问题,实验做完了,可以将本来的隐藏文件设置为隐藏状态了,请看 上一篇中的命令行。(本人用的是 mac 10.11 目前最新苹果系统)
PS:在公司里请不要随意的升级系统,如果你升级了系统,与你的已经做了一半的工程里面有东西不匹配了,工程报红,就是你的责任了,你会挨批,会不好过的。所以注意不要擅自升级公司里自己的系统。
Other:感谢博文 <参考>
相关推荐
- oracle数据导入导出_oracle数据导入导出工具
-
关于oracle的数据导入导出,这个功能的使用场景,一般是换服务环境,把原先的oracle数据导入到另外一台oracle数据库,或者导出备份使用。只不过oracle的导入导出命令不好记忆,稍稍有点复杂...
- 继续学习Python中的while true/break语句
-
上次讲到if语句的用法,大家在微信公众号问了小编很多问题,那么小编在这几种解决一下,1.else和elif是子模块,不能单独使用2.一个if语句中可以包括很多个elif语句,但结尾只能有一个else解...
- python continue和break的区别_python中break语句和continue语句的区别
-
python中循环语句经常会使用continue和break,那么这2者的区别是?continue是跳出本次循环,进行下一次循环;break是跳出整个循环;例如:...
- 简单学Python——关键字6——break和continue
-
Python退出循环,有break语句和continue语句两种实现方式。break语句和continue语句的区别:break语句作用是终止循环。continue语句作用是跳出本轮循环,继续下一次循...
- 2-1,0基础学Python之 break退出循环、 continue继续循环 多重循
-
用for循环或者while循环时,如果要在循环体内直接退出循环,可以使用break语句。比如计算1至100的整数和,我们用while来实现:sum=0x=1whileTrue...
- Python 中 break 和 continue 傻傻分不清
-
大家好啊,我是大田。今天分享一下break和continue在代码中的执行效果是什么,进一步区分出二者的区别。一、continue例1:当小明3岁时不打印年龄,其余年龄正常循环打印。可以看...
- python中的流程控制语句:continue、break 和 return使用方法
-
Python中,continue、break和return是控制流程的关键语句,用于在循环或函数中提前退出或跳过某些操作。它们的用途和区别如下:1.continue(跳过当前循环的剩余部分,进...
- L017:continue和break - 教程文案
-
continue和break在Python中,continue和break是用于控制循环(如for和while)执行流程的关键字,它们的作用如下:1.continue:跳过当前迭代,...
- 作为前端开发者,你都经历过怎样的面试?
-
已经裸辞1个月了,最近开始投简历找工作,遇到各种各样的面试,今天分享一下。其实在职的时候也做过面试官,面试官时,感觉自己问的问题很难区分候选人的能力,最好的办法就是看看候选人的github上的代码仓库...
- 面试被问 const 是否不可变?这样回答才显功底
-
作为前端开发者,我在学习ES6特性时,总被const的"善变"搞得一头雾水——为什么用const声明的数组还能push元素?为什么基本类型赋值就会报错?直到翻遍MDN文档、对着内存图反...
- 2023金九银十必看前端面试题!2w字精品!
-
导文2023金九银十必看前端面试题!金九银十黄金期来了想要跳槽的小伙伴快来看啊CSS1.请解释CSS的盒模型是什么,并描述其组成部分。答案:CSS的盒模型是用于布局和定位元素的概念。它由内容区域...
- 前端面试总结_前端面试题整理
-
记得当时大二的时候,看到实验室的学长学姐忙于各种春招,有些收获了大厂offer,有些还在苦苦面试,其实那时候的心里还蛮忐忑的,不知道自己大三的时候会是什么样的一个水平,所以从19年的寒假放完,大二下学...
- 由浅入深,66条JavaScript面试知识点(七)
-
作者:JakeZhang转发链接:https://juejin.im/post/5ef8377f6fb9a07e693a6061目录由浅入深,66条JavaScript面试知识点(一)由浅入深,66...
- 2024前端面试真题之—VUE篇_前端面试题vue2020及答案
-
添加图片注释,不超过140字(可选)1.vue的生命周期有哪些及每个生命周期做了什么?beforeCreate是newVue()之后触发的第一个钩子,在当前阶段data、methods、com...
- 今年最常见的前端面试题,你会做几道?
-
在面试或招聘前端开发人员时,期望、现实和需求之间总是存在着巨大差距。面试其实是一个交流想法的地方,挑战人们的思考方式,并客观地分析给定的问题。可以通过面试了解人们如何做出决策,了解一个人对技术和解决问...
- 一周热门
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)
