首页 > 编程知识 正文

git clone指定版本(git图形化管理工具)

时间:2023-05-04 20:52:32 阅读:85470 作者:3321

什么是Git?

Git直译是“笨蛋、饭桶”,是天才开发、世界上最活跃的开发者使用的版本管理系统。 就像Geek这个词一样,可能是黑色幽默。

在这里简单介绍一下。 详情请参照资料。 本文主要说明使用中的几个问题。

Git是免费的开源分布式版本控制系统,用于敏捷高效地处理小型或大型项目。 Git的读法是/gt/。

Git是一个开放源代码的分布式版本控制系统,可以高效、高速地处理非常小的项目版本控制。 Git是Linus Torvalds为帮助管理Linux内核开发而开发的开源版本控制软件。

一般基本命令

git init :初始化

git克隆:克隆

git status :显示状态

获取添加:添加

git commit :提交

git pull :拉

推送:推送

这些命令比较简单,只要稍微查一下资料就可以正常使用。

有点复杂的基本指令

git log:显示所有提交记录。

git tag:在客户端开发时经常考虑到版本。 使用git tag v1.0,可以在当前代码状态下创建新的v1.0标签,使用git tag可以显示当前的所有标签。 使用git checkout v1.1时,将切换为v1.1的代码状态。

git diff:比较当前文件和转移区域的差异、两次提交的差异、两个分支的差异以及两个版本库的差异。

git checkout:切换、checkout可以进行标签切换、分支。 checkout还可以取消暂存区中尚未包含add的代码。 例如,git checkout readme.md可以取消对md文档所做的更改。

git RM--从缓存:转移区删除等待提交的代码

git远程添加原始测试:的本地仓库与远程名为tes的t仓库相关联

别名alias

经常使用Git时,输入命令需要时间。 特别是对于较长的命令,用户可以自定义别名以简化命令。 例如,git config--全球别名. coche cout

git config---- global alias.cicommitgitconfig---global alias.PSM ' pushoriginmaster ' git config---global alias.ppplias

本文将讨论一个重点:团队合作。

分支

什么是分支? 为什么需要分叉?

如果一个产品只有一个代码,需要多人开发,任何人对该代码进行自由修改,都会产生混乱,不是吗?

在这种情况下,必须使用分支以防止项目组中的不同开发人员相互独立和相互干扰。 在云中,首先需要代码的来源。 我们称之为“主分歧(master )”。 就像青藏高原的巴颜喀喇山脉在黄河上一样。 另一个重要的分支是开发分支(develop )。

主人:随时准备发行状态develop :最新的开发状态

初步协调小组

在线上一般预约master、develop两个分支,开发者先从master分支下拉代码,然后在本地根据master新制作本地的开发分支,然后开发

在本地完成开发内容时,将本地开发集成到本地master,将本地master推送到在线master,切换到本地开发,将本地开发集成到在线开发(有点别扭,其实是两步) ) )。

如果本地仅开发了一半,则可以将本地开发推送到在线开发。

命令行

在git分支测试:上创建新的测试分支。 另外,创建的分支基于当前分支。

git检查输出测试:将切换到分支测试。

git checkout-b test:将上述两个步骤合并为一个步骤。

git push origin测试:将本地测试分支推送到远程仓库。

git branch:显示本地分支的列表。

git分支- r :显示远程分支的列表。

git分支测试:将删除本地分支测试。

git分支- d测试:强制删除本地分支。 为什么要强制删除? 因为有时不能正常删除。 例如,您的test分支本身中存在尚未合并的代码。 在这种情况下,如果尝试使用git branch-d a,则无法删除此分支。 显示智能提示。

git push origin :测试:删除远程分支。

gitcheckoutdeveloporigin /开发

:将远程分支迁移到本地。

合并

合并有两种方式: merge rebase

merge

假如在 test分支上进行开发,开发完成后想要把分支合并到 master分支。

首先需要切换到master分支 git checkout master

git merge test 不出意外就能将 test分支合并进来,但是需要考虑意外情况:发生版本冲突。

rebase rebase和 merge有异曲同工之处,使用 rebase也能达到合并分支的效果。 git checkout master git rebase test

但是这两点的差异在哪?这是stormzhang的一个比喻:

rebase 跟 merge 的区别你们可以理解成有两个书架,你需要把两个书架的书整理到一起去,第一种做法是 merge ,比较粗鲁暴力,就直接腾出一块地方把另一个书架的书全部放进 去,虽然暴力,但是这种做法你可以知道哪些书是来自另一个书架的;第二种做法就是 rebase ,他会把两个书架的书先进行比较,按照购书的时间来给他重新排序,然后重新放置 好,这样做的好处就是合并之后的书架看起来很有逻辑,但是你很难清晰的知道哪些书来自哪个书架的。

冲突

两个人在两条分支上开发不同的功能,然后依次合并到主分支,一般来说两人各司其职是不会出现问题的。但是有些情况,两个人对同一块公共代码进行了更改,比如工具类。此时第一个人可以顺利合并master,但是第二个人提交时会出现冲突,需要手动解决冲突才能顺利合并。

在解决冲突问题时,我们可以根据提示的代码差异进行更改后重新提交。

Stash

假如我们已经在一个分支开发到了一半,现在需要切换到别的分支去完成一些任务,那么现在当前的代码如何保留呢?

此时需要用到 stash,当然前提是没有 commit。首先执行 git stash此时会将还没有 commit的代码保存到一个暂存区,此时执行 git status查看,会发现当前分支没有等待提交的代码。 git stash list可以 查看暂存区有多少条记录(一条分支暂存的所有代码只会生成一条记录)

此时可以切换到其他分支,将任务完成,再切回到原来的分支,此时,如何将未提交的代码还原?执行 git stash apply,然后使用 git stash drop将暂存区的记录删除。而 git stash pop相当于将上述两步变为一步。

进阶协调

理想化的状态是这样:比如有三个人开发一款产品,那三个人分别创建三个分支,在各自的分支上完成后合依次合并到 master。而现实情况的干扰因素却多得多。这时候需要用到分支管理流程 GitFlow。

一般状态下有两个主要分支: master:随时处于准备发布状态 develop:最新的开发状态

如果出现了线上版本出现严重bug需要紧急修复,或者某些功能完成后出现了需求变更,这时,需要再引入三个辅助分支。

feature: 开发新功能的分支, 基于 develop, 完成后 merge 回 develop

release: 准备要发布版本的分支, 用来修复 bug,基于 develop,完成后 merge 回 develop 和 master

hotfix: 修复 master 上的问题,紧急情况, 等不及 release 版本就必须马上上线. 基于 master, 完成后 merge回 master 和 develop

情景:

假如我们现在的项目有 master和 develop分支

现在我准备开发一个登录功能,B同学准备开发一个注册功能,那么我需要基于 develop分支新建 git branch feature/login,B同学需要基于 develop新建 git branch feature/register

比如突然说线上版本的图片显示出了bug,需要紧急修复,尽快上线,那么需要在 master分支下执行 git branch hotfix/imgDisplay,修复完成后合并到 master和 develop

如果某一阶段开发的差不多了,功能都已经合并到了 develop,现在需要对 develop上的代码进行一个整体的测试,假如测试通过,可以发布到正式环境,此时可以基于 develop新建一个分支 git branch release/v1.0

这是一个规范化的分支管理流程,可能在小团队的开发中,有些步骤可以忽略,但是我建议还是按照这一套逻辑管理代码会更为高效。

当然,如果你觉得输入这些命令很麻烦,尤其是可以将命令行合并为命令块的情况,你可以使用 gitflow 推出的一套工具,简化命令。开源地址:https://github.com/nvie/gitflow

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。