关于git:保姆级教程-Merge-Request-分支合并请求

保姆级教程 | Merge Request 分支合并申请What is it ?首先我想先来讲讲什么是分支合并申请Merge Request(也可叫Pull Request,下文中全用Merge Request或其缩写MR指代),以及它有什么作用(如果你对此概念有所理解,你齐全能够跳过What is it)。 MR(或者PR)就是指将你开发的代码的内容以一种申请合并的形式来合并到它想去的分支上,这个申请的接管人(Reviewer)个别是我的项目、团队的负责人或者其余成员。 一般来讲,开发团队都对Code Review(代码复审/审查/检视)的器重水平比拟高。因为Code Review的的确可能晋升代码的品质以及缩小BUG的产生率。 Merge Request在Code review中就是重要的一环。如果应用MR来发动合并申请,那么在代码审查时就齐全能够以你本次申请的合并内容为单元进行代码审查,如果审查通过那么就胜利合并。审查交由Reviewer进行,他能够是申请的接管人。如果团队多个成员坐在一起来看你的本次合并内容,那么天然Reviewer就是这些人了。一份代码通过多人的审查,代码问题发生率天然会升高,开发者在开发时也会保持良好的编码习惯,毕竟没人想被他人指导本人的代码。 不过有些团队可能并不器重Merge Request,最多也就是在dev分支(大家共用的开发分支)上检出一个新分支,而后在新分支上进行开发,而后commit -> push最初merge到 dev 分支上就完事了。 上面咱们将以Merge Request为指标,从建设仓库开始讲述一个残缺的git工作流以及其中的git操作。 How to do?接下来咱们从0开始,以Gitee(码云)代码托管和研发合作平台为例,来讲讲如何在失常的git工作流程中应用Merge request。 1.创立一个近程仓库,默认创立master分支 2. 创立本地仓库,并关联近程仓库初始化本地仓库后,轻易创立一个文件,而后提交到近程仓库的master分支。 git inittouch README.mdgit add README.mdgit commit -m "first commit"git remote add origin https://gitee.com/yaodao666/git-merge-requet.gitgit push -u origin mastergit push -u的作用就是关联并推送内容到上近程仓库的分支。(前面还有别的关联近程分支的办法。) 3. 以master分支为终点创立一个dev分支咱们前面就将以dev分支作为开发分支(仓库成员共用的一个分支)。 4. 仓库中再增加另一个成员该成员将在前面作为Reviewer来解决本人的Merge Request,看咱们的提交内容,从而达到代码审查的目标。 而后为该用户设置为代码审查人员: 以上的操作都在Gitee仓库的治理设置选项中。4. 本地切换到dev分支,并连贯近程dev分支此时本地是没有dev分支的。能够用 git branch -a命令来查看所有分支。 ...

November 10, 2021 · 2 min · jiezi

关于git:Computer-Vision

Homework 5Computer Vision, Fall 2021Due Date: 10AM November 15, 2021Total Points: 18This homework contains one written assignment, one programming walkthroughand one programming challenge. All submissions are due at 10:00 a.m. onNovember 15, 2021. Follow the submission instructions in the document titled“Guidelines for Homework Assignments.” Note that there is no credit for latesubmissions. So please start working on the homework early.Written AssignmentsProblem 1: A Lambertian surface is illuminated simultaneously by two distant pointsources with equal intensity in the direction s1 and s2. Show that for all normals onthe surface that are visible to both sources, illumination can be viewed as comingfrom a single “effective” direction s3. How is s3 related to s1 and s2? Now, if the twodistant sources have unequal intensities I1 and I2, respectively, what is the directionand intensity of the “effective” source? (4 Points)Problem 2: The reflectance map can be parameterized in various ways. In class wehave concentrated on using the gradient (p, q) as a means of specifying surfaceorientation. In some cases, the Gaussian sphere is more suitable for this purpose.Each point on the Gaussian sphere corresponds to a particular direction, from thecenter of the sphere to that point. The orientation of a surface patch can be specifiedby giving the direction of its surface normal. Thus a given surface orientation can beidentified with a particular point on the Gaussian sphere. The reflectance map ismerely a means of associating brightness with orientation.a. What are the contours of constant brightness on the Gaussian sphere in thecase of a Lambertian surface illuminated by a point source? Hint: See Figure1a. (2 Points)b. Show that there are at most two surface orientations that give rise to a givenpair of brightness values when the photometric stereo method is applied to aLambertian surface. Assume that two different light sources are used. Hint:1See Figure 1b. (2 Points)Figure 1: The reflectance map can be plotted on the Gaussian sphere. (a) The contours of constantbrightness are particularly simple for a Lambertian surface illuminated by a point source. (b) Thismakes it easy to prove that there are at most two solutions to the two-source photometric stereoproblem in this case.Programming AssignmentsThis programming assignment has one challenge (with its own subset of milestonesor unit tests). Instructions and summary corresponding to these are given below.runHw5.m will be your main interface for executing and testing your code.Parameters for the different programs or unit tests can also be set in that file.Before submission, make sure you can run all your programs with the commandrunHw5(‘all’) with no errors.MATLAB is optimized for operations involving matrices and vectors. Avoidusing loops (e.g., for, while) in MATLAB whenever possible—looping can resultin long running code. Instead, you should “vectorize [1]” loops to optimize yourcode for performance. In many cases, vectorization also results in morecompact code (fewer lines to write!). If you are new to MATLAB, refer to thesearticles [1] [2] on techniques to optimize MATLAB code.2Challenge 1: Your task is to develop a vision system that recovers the shape, surfacenormal and reflectance of an object. For this purpose you will use photometricstereo.You will be given 5 images of an object taken using five different light sources. Yourtask is to compute the surface normal and albedo for the object. For this purpose,however, you will need to know the directions and intensities of the five lightsources. Thus, in the first part of the assignment, you will compute the light sourcesdirections and intensities from 5 images of a sphere and use this information in thesecond part to recover the orientation and reflectance.The 11 images, sphere0…sphere5, and vase1…vase5 are provided to you.Before you begin, pay attention to the following assumptions you can make aboutthe capture settings:● The surfaces of all objects (including the sphere) are Lambertian. This meansthere are only diffuse peaks in the reflectance maps (no specularcomponents).● For the images, assume orthographic projections.● Image files with the same indices are taken using the same light source. Forexample, sphere1 and vase1 are taken using light source number 1 only.● The objects maintain the same position, orientation and scale through thedifferent images – the only difference is the light source. For example, thesphere in sphere0…sphere5 has the same coordinates and the same radius.● The light sources are not in singular configuration, i.e., the S-matrix that youwill compute should not be singular.● You may NOT assume that the light sources are of equal intensities. Thismeans that you need to recover not only the directions of the light sourcesbut also their intensities.● The background in the image is black (0 pixel value) in all images.The task is divided into four parts, each corresponding to a program you need towrite and submit.a. First you need to find the locations of the sphere and its radius. For thispurpose you will use the image sphere0, which is taken using many lightsources (so that the entire front hemisphere is visible).3Write a program findSphere that locates the sphere in an image andcomputes its center and radius.[center, radius] = findSphere(input_img)Assuming an orthographic project, the sphere projects into a circle on theimage plane. Find the location of the circle by computing its centroid. Alsoestimate the area of the circle and from this, compute the radius of the circle.You may use the Image Processing Toolbox functions im2bw andregionprops.(1 points)b. Now you need to compute the directions and intensities of the light sources.For this purpose you should use the images sphere1…sphere5.Derive a formula to compute the normal vector to the sphere’s surface at agiven point, knowing the point’s coordinates (in the image coordinate frame),and the center and radius of the sphere’s projection onto the image plane(again, assume an orthographic projection). This formula should give you theresulting normal vector in a 3-D coordinate system, originating at thesphere’s center, having its x-axis and y-axis parallel respectively to the x-axisand the y-axis of the image, and z-axis chosen such as to form an orthonormalright-hand coordinate system. Don’t forget to include your formula in yourREADME file.Write a program computeLightDirections that uses this formula, alongwith the parameters computed in (a), to find the normal to the brightestsurface spot on the sphere in each of the 5 images. Assume that this is thedirection of the corresponding light source (Why is it safe to assume this?State this in the README).Finally, for the intensity of the light source, use the magnitude (brightness) ofthe brightness pixel found in the corresponding image. Scale the directionvector so that its length equals this value.light_dirs_5x3 = computeLightDirections(center, radius,img_cell)Center and radius are the resulted computed in (a). img_cell contains the5 images of the sphere. The resulting light_dirs_5x3 is a 5x3 matrix. Row i4of light_dirs_5x3 contains the x-, y-, and z-components of the vectorcomputed for light source i. (2 points)c. Write a program computeMask to compute a binary foreground mask for theobject. A pixel in the mask has a value 1 if it belongs to the object and 0 if itbelongs to the background. Distinguishing between the foreground andbackground is simple: if a pixel is zero in all 5 images, then it is background.Otherwise, it is foreground.mask = computeMask(img_cell)The img_cell contains the 5 images of an object and mask is the binaryimage mask. (1 points)d. Write a program computeNormals that, given 5 images of an object,computes the normals and albedo to that object’s surface.[normal, albedo_img] = computeNormals(light_dirs, img_cell,mask)You may want to use the formula given in the class lecture notes. Be carefulhere! Make sure to take into account the different intensities of the lightsource.Photometric stereo requires the object to be lit by at least 3 light sources.However, in our case, we have a total of 5 light sources. The lighting has beenarranged in such a way that all visible surface points on an object are lit by atleast 3 light sources. Therefore, while computing the surface normal at apoint, choose the 3 light sources for which the point appears brightest. Becareful – choosing the wrong light sources will result in erroneous surfacenormal. (You may also decide to choose more than 3 light sources to computethe surface normal. This results in an over-determined linear system and canprovide robust estimates. However, such a computation is not mandatory.)Do not compute the surface normal for the background. You can assume thatthe surface normal in this region is looking toward the camera. Use the maskgenerated in the previous program to identify whether a given pixelcorresponds to the object or the background.Scale the albedo up or down to fit in the range 0…1 and show them in theoutput image. Thus each pixel in the output image should be the pixel’salbedo scaled by a constant factor. (6 points)5At this point you can use the outputs of your program to reconstruct thesurface of the object. demoSurfaceReconstruction andreconstructSurf.m demonstrate how to use the Frankot-Chellappaalgorithm to compute the 3D shape from surface normals. You can use theMATLAB function surf to visualize the reconstructed surface. Surfacereconstruction is provided as a demo--no submission is required ...

November 10, 2021 · 7 min · jiezi

关于git:基于-KubeVela-的-GitOps-交付

简介: KubeVela 是一个简略、易用、且高可扩大的云原生利用治理和交付平台,KubeVela 背地的 OAM 模型人造解决了利用构建过程中对简单资源的组合、编排等治理问题,同时也将前期的运维策略模型化,这意味着 KubeVela 能够联合 GitOps 治理简单大规模利用,收敛因为团队与零碎规模增长导致的零碎复杂度问题。 作者|董天欣(雾雾) KubeVela 是一个简略、易用、且高可扩大的云原生利用治理和交付平台,能让开发人员方便快捷地在 Kubernetes 上定义与交付古代微服务利用,无需理解任何 Kubernetes 基础设施相干的细节。 KubeVela 背地的 OAM 模型人造解决了利用构建过程中对简单资源的组合、编排等治理问题,同时也将前期的运维策略模型化,这意味着 KubeVela 能够联合 GitOps 治理简单大规模利用,收敛因为团队与零碎规模增长导致的零碎复杂度问题。 什么是 GitOps它的核心思想是将利用零碎所需的基础架构和利用配置申明性形容寄存在Git仓库中,并配合一个自动化流程,使每次仓库被更新后,自动化过程都能逐步将环境更新到最新配置。 这样的形式容许开发人员通过间接更改 Git 仓库中的代码和配置来主动部署利用,应用 GitOps 的形式能够为利用研发带来诸多价值,例如: 进步生产效率。通过主动的继续部署可能放慢均匀部署工夫,减少开发效率。 升高开发人员部署的门槛。通过推送代码而非容器配置,开发人员能够不须要理解 Kubernetes 的外部实现,便能够轻易部署。 使变更记录可追踪。通过 Git 来治理集群,能够使每一次更改都可追踪,增强了审计跟踪。 可通过 Git 的回滚/分支性能来复原集群。 KubeVela 与 GitOpsKubeVela 作为一个申明式的利用交付管制立体,人造反对以 GitOps 的形式来应用,并使用户更显著地感触到由 GitOps 带来的好处,和端到端的利用交付与治理体验,包含: 利用交付工作流(CD 流水线)即:KubeVela 反对在 GitOps 模式中形容过程式的利用交付,而不只是简略的申明终态;解决部署过程中的各种依赖关系和拓扑构造;在现有各种 GitOps 工具的语义之上提供对立的下层形象,简化利用交付与治理过程;对立进行云服务的申明、部署和服务绑定;供开箱即用的交付策略(金丝雀、蓝绿公布等);提供开箱即用的混合云/多云部署策略(搁置规定、集群过滤规定等);在多环境交付中提供 Kustomize 格调的 Patch 来形容部署差别,而无需学习任何 Kustomize 自身的细节; …… 在本文中,咱们次要解说间接应用 KubeVela 在 GitOps 模式下进行交付的步骤。 ...

November 10, 2021 · 5 min · jiezi

关于git:git-使用简易指南

层级关系 工作区(add) --> 暂存区(commit) --> 本地库(push) --> 近程库 1.从近程库获取最新代码合并到本地//查问以后近程的版本$ git remote -v//获取最新代码到本地(本地以后分支为[branch],获取的远端的分支为[origin/branch])$ git fetch origin master [示例1:获取远端的origin/master分支]$ git fetch origin dev [示例2:获取远端的origin/dev分支]//查看版本差别$ git log -p master..origin/master [示例1:查看本地master与远端origin/master的版本差别]$ git log -p dev..origin/dev [示例2:查看本地dev与远端origin/dev的版本差别]//合并最新代码到本地分支$ git merge origin/master [示例1:合并远端分支origin/master到以后分支]$ git merge origin/dev [示例2:合并远端分支origin/dev到以后分支]2.本地创立分支,并同步近程分支的内容$ git branch --track master origin/master [示例: 本地建设master分支,并下载/关联近程orgin/master]3.Git 根底 - tag每一个提交都有一个commitID,然而每次记录commitID都很简单,应用git tag能够在一些重要的版本和批改中退出一个标识,能够很疾速的找到咱们须要的版本。 tag 和 branch 的相互配合应用,有时候起到十分不便的成果,例如 曾经公布了 v1.0 v2.0 v3.0 三个版本,这个时候,我忽然想不改现有代码的前提下,在 v2.0 的根底上加个新性能,作为 v4.0 公布。就能够 检出 v2.0 的代码作为一个 branch ,而后作为开发分支。 ...

November 9, 2021 · 3 min · jiezi

关于git:五Git本地命令行

1.Git介绍Git是一种分布式版本控制系统的实现,客户端并不只是提取最新版本的文件快照,而是把代码仓库残缺的镜像下来,包含了残缺的历史记录. 2.Git 命令行2.1.装置https://git-scm.com/download/win64-bit Git for Windows Setup下载实现之后,抉择装置门路,其余的选项参照下图: 2.2.本地化操作2.2.1.配置sshkey,实现免密提交在git bash里执行 ssh-keygen -t rsa -C "abc@xyz.com",能够不输出明码在git bash里执行 cd ~/.ssh在git bash里执行vim id_rsa.pub,将外面的内容复制到 gitlab -> 右上角 ->edit profile -> SSH KEYS -> add key 2.2.2.配置提交人、邮箱git config --global user.name "abc" git config --global user.email "abc@xyz.com"git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" # 配置日志格局git config --list 2.2.3初始化本地代码库git init 2.2.4.本地增加及提交git add . -A # 将代码从workspace 增加到 stash(index)git commit -m "feat:实现Hello DevOps DEVOPS-15" # 将代码从stash(index) 增加到repository ...

November 8, 2021 · 1 min · jiezi

关于git:Git-配置多提交用户

1. 目标最近我给Gitee提交了很多代码,然而奉献图还是一篇空白。查找github\gitee 统计代码共享量时应用的规定为: 贡献度的统计数据包含代码提交、创立工作 / Pull Request、合并 Pull Request,其中代码提交的次数需本地配置的 Git 邮箱是 Github/Gitee 帐号已确认绑定的才会被统计。原来是因为:我工作电脑上有两种我的项目:、 Gitee 上的集体我的项目公司内网 Gitlab 上的公司我的项目我在装置Git的时候设置了Git全局用户邮箱为公司邮箱。导致Giee我的项目提交用户邮箱信息都是公司的邮箱,所以代码共享上就看不到绿油油的一遍。 我的目标就是Gitee我的项目应用集体的邮箱,公司Gitlab我的项目应用公司邮箱。 2. 办法在 Git 2.13 版本中,减少了 conditional includes 配置,能够创立多个 gitconfig 文件,并针对不同的根目录应用不同的配置文件。 例如,以下全局配置文件 ~/.gitconfig 中蕴含以下用户配置信息,当我的项目 clone 在 ~/dev/ 目录下时,会主动应用另外一份配置文件 [user] name = Your Name email = your_email@example.com[includeIf "gitdir:D:/workspace/gitee/"] path = gitconfig/gitee.gitconfig[includeIf "gitdir:D:/workspace/github/"] path = gitconfig/github.gitconfig留神:此处的path须要放在和 .gitconfig 雷同的目录下,否则不失效,比方 github 的配置 github.gitconfig 放在 C:/Users/<user-name>/.gitconfig 目录下,新建文件夹 gitconfig 中,否则不失效以下是 gitconfig/gitee.gitconfig 文件的配置 [user] name = Another Name email = another_email@example.com测试成果: ...

November 6, 2021 · 1 min · jiezi

关于git:让-fork-出来的-Github-仓库从远端仓库拖取最新的修改

规范的 Spartacus repo:https://github.com/SAP/spartacus 我 fork 了一个本人的仓库: https://github.com/wangzixi-d... 当远端仓库有新的提交后,我在我本人的仓库里,应用如下命令,抓取最新的提交: git pull https://github.com/SAP/sparta... develop输入: 而后 git p 即可: 最初看到的提交记录: 更多Jerry的原创文章,尽在:"汪子熙":

November 4, 2021 · 1 min · jiezi

关于git:如何给-git-文件夹瘦身

如何给 .git 文件夹瘦身?举荐工具:https://github.com/newren/git... 对工程进行剖析git-filter-repo --analyze删除指定文件或文件夹,如:git-filter-repo --path-glob 'android/*.hprof' --invert-paths --force更新所有分支git push origin --force --all 更新所有 tag(如果有)git push origin --force --tags

November 4, 2021 · 1 min · jiezi

关于git:常用-git-命令

罕用 git 命令1. 回滚到某次提交1. 回滚到上一次版本git reset --hard HEAD2. 回滚到某个commit_id(通过git log查找)git reset --hard commit_id3. 提交回滚git push origin HEAD --force2. 撤销addgit reset --mixed3. 撤销commitgit reset --soft HEAD^4. 更新近程分支列表git remote update origin --prunegit remote prune origin5. 本地工程同步到remote时,git push 被回绝git pull origin master --allow-unrelated-histories6. 将本地已存在我的项目提交到远端cd existing-projectgit initgit add .git commit -m "Initial Commit"git remote add origin 'repo url'git push -u origin master7. 解决批改.gitignore不失效git rm -r --cached .git add .git commit 'update gitignore'8. 撤销所有改变,包含批改和新增文件git reset --hardgit clean -df

November 4, 2021 · 1 min · jiezi

关于git:Mac-git-ssh配置

# 进入ssh目录cd ~/.ssh# 如果不能进入该目录,阐明没生成过,则须要查看下是否配置过git账户git config --list# 全局用户名,倡议拼音或英文git config --global user.name "account name" # 全局邮箱地址git config --global user.email "account email"# 生成秘钥ssh-keygen -t rsa -C "account email"# 提醒输出保留密钥门路,间接回车即可(三次默认回车)。胜利是显示如下+---[RSA 2048]----+| .o+o. || .... || +..+ || ..=. + || .o..o S ||...= .o+ ||E+* .+=o. ||+=+++=o.= ||OB+.+=+o . |+----[SHA256]-----+# 查看私有密钥,全副复制,增加到github中cat id_rsa.pub# 测验是否链接胜利输出“ssh -T git@github.com”# 如果呈现如下内容,则证实链接胜利“Hi lover! You've successfully authenticated, but GitHub does not provide shell access.”

November 3, 2021 · 1 min · jiezi

关于git:Git的常规操作

作为一名开发人员,不论走到哪里可能都会和代码仓库产生不可形容的关系,从clone仓库 => 新的性能分支 => 开发性能实现后提交 => 分支合并 => 打上标签 => 部署到线上环境,这一系列操作都离不开这个代码版本管理工具Git,所以常见命令烂熟于心有助于咱们晋升效率。克隆git仓库gitlab或者github有有两种克隆形式,ssh协定和http协定。应用http只有输出用户名和明码即可,应用ssh是要部署本人的公钥到gitlab或者github上,在登录用户的设置里边配置。查问本人的公钥,个别本人电脑的以下目录: ➜ ~ cd .ssh➜ .ssh lsid_rsa id_rsa.pub known_hosts公钥就是id_rsa.pub这个文件中的内容,部署好之后就能够去克隆仓库了。 分支操作git checkout -b好的,据说名为Blog的仓库你曾经克隆到本地,当初要做一个评论的性能,那么从终端进入我的项目个别是这个样子: ➜ Blog git:(main)如果生产环境部署的是main分支或者叫master,那么新的性能应该从这个主分支检出。 ➜ Blog git:(main) git checkout -b commentSwitched to a new branch 'comment'* comment ele maingit status / git add / git commit到这里就能够在这个分支上做你的性能了。当你写到衰亡的时候,忽然领导通知你线上有个问题急须要修复。忽然有点慌乱,不过还是得先保留你做了一半的评论性能。于是你应用了以下命令: ➜ Blog git:(comment) ✗ git statusOn branch commentChanges not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: README.mdno changes added to commit (use "git add" and/or "git commit -a")// 看到了相熟的内容改变,示意释怀,应用上面的命令把它们纳入到版本治理➜ Blog git:(comment) ✗ git add .➜ Blog git:(comment) ✗ git commit -m "comment progress 50%"[comment 006a55d] comment progress 50% 1 file changed, 1 insertion(+), 1 deletion(-)git log / git reset这样做是能够,然而产生了一次提交记录,其实还能够把你的批改先暂存起来,当初咱们把这次提交重置掉,要进行重置咱们须要晓得上一个版本号: ...

October 29, 2021 · 2 min · jiezi

关于git:在OneOSLite上学习搭建CICD流程GitLab篇

1.让GitLab CI/CD做什么嵌入式软件开发畛域高频应用的开发语言是C语言,在大型项目开发中,咱们往往会有格局审查、编译审查的需要。如果能借助GitLab平台实现代码的格局和编译问题审查,将会极大进步合入代码的规范性,把控新代码对原有代码的影响,进步代码整体品质。 本文将手把手教学如何借助CI帮咱们做代码格局审查、编译审查。 2.GitLab CI/CD疾速搭建2.1 VC Code设置将VS Code设置为保留时主动格式化。 在代码根目录下搁置.clang-format和.clang-format-ignore文件。 .clang-format文件是代码格式化和格局查看的配置文件,能够从Clang-Format官网网页下载到模板再依据本人的需要调整,语法详见链接。编辑好了.clang-format这个文件,置于代码根目录,用VS Code编辑完代码后执行保留操作,保留的文件将主动按这个文件的格局标准来格式化代码。 .clang-format-ignore文件是用于配置在CI中疏忽代码格局查看的文件或文件夹。 2.2 GitLab 配置前提:你曾经在GitLab有代码仓库,并且你是仓库的Owner或Maintainer身份。 如何让GitLab CI/CD为咱们做代码格局的审查和编译审查呢,总结起来就五点: 仓库根目录配置.gitlab-ci.yml文件;仓库中配置代码审查的脚本、clang-format格局审查工具和编译脚本;配置一个用于编译的MDK工程;为GitLab公共仓库配置一个Runner(个别是服务器);为GitLab集体仓库配置一个Runner(个别是本机);Runner环境配置。.gitlab-ci.yml能够了解为流水线文件,应用 YAML语法形容,.gitlab-ci.yml文件形容了你要做什么事件。本需要包含代码的拉取、代码格局审查和代码编译。把.gitlab-ci.yml放到远端分支的根目录,你每次push或Merge代码到Git近程仓库时,Runner都会主动触发CI pipeline,去执行.gitlab-ci.yml流水线文件中形容的事。 Runner很好了解,就是一个用来跑仓库代码的格局审查与编译审查的机器,个别公共仓库会是一台服务器,集体仓库会是本机。 3.具体配置流程3.1 .gitlab-ci.yml文件.gitlab-ci.yml如下: 文件形容了代码更新形式和两个Job。一个Job是check,做代码格局审查;另一个Job是build,做代码编译。script形容的是执行命令,即在Runner中执行的命令。tags形容的是Runner的标识,与Runner注册时的设置统一,用于在CI pipeline中顺利找到该主机。 代码格局审查的命令:python .workflow/ci/format_check/run-clang-format.py --clang-format-executable .workflow/ci/format_check/clang-format.exe -r components/ 。命令中调用了Python脚本和clang-format.exe执行文件,并指定了要查看的文件夹门路。 代码编译的命令:.workflow/ci/build/build_keil.bat,调用了指定门路下的编译脚本。 3.2 脚本及工具配置在代码仓库 .workflow > ci 门路下的不同文件夹中搁置格局审查的脚本、clang-format格局审查工具、编译脚本: format_check文件夹搁置run-clang-format.py格局审查脚本和clang-format.exe执行文件,clang-format.exe版本为12.0.1: build文件夹搁置build_keil.bat编译脚本: 3.3 编译工程在代码仓库 .workflow > ci > projects_compile门路下搁置一个或多个用于编译的MDK工程,通过一个或多个工程的配置来铺盖所有代码。 3.4 公共仓库配置Runner首先须要找到一台windows主机。 在零碎中的某处创立一个文件夹,例如:F:\OneOS_Operate_System\GitLab-Runner。下载64 位或32 位二进制文件并将其放入创立的文件夹中。重命名为gitlab-runner.exe(可选)。注册Runner 关上Windows PowerShell,进入F:\OneOS_Operate_System\GitLab-Runner门路运行./gitlab-runner.exe register命令:两头阶段须要输出URL、Token、Runner的形容、Runner的标识、shell。其中Runner的标识须要与.gitlab-ci.yml文件中的tags形容的Runner的标识统一,否则无奈找到指定的Runner。 其中的URL和Token则是来自代码仓库的Runner设置中: 批改config.toml 注册完Runner后,能够在F:\OneOS_Operate_System\GitLab-Runner文件夹下看到config.toml文件,关上并批改一处:shell = "pwsh"为shell = "powershell" ...

October 28, 2021 · 1 min · jiezi

关于git:Git清空提交记录

公开仓库有时候不小心把敏感信息带上去了,而且乌七八糟的提交记录比拟多,索性间接清空。 在网页把仓库清空本地切换到新的分支git checkout --orphan latest_branch缓存所有文件git add .提交跟踪过的文件git commit -m "init"删除master分支git branch -D master重命名以后分支为mastergit branch -m master强制提交到近程master分支git push -f origin master

October 27, 2021 · 1 min · jiezi

关于git:git-暂存

背景在开发的过程中,常常会遇到,几个分支并行进行。当在A分支开发,忽然发现有个线上bug,须要长期切换到B分支进行解决,同时,A分支上的代码还未编写残缺,不想提交下来。 这个时候, git stash 的益处就提现进去了。 介绍stash会解决工作目录的脏的状态——即跟踪文件的批改与暂存的改变——而后将未实现的批改保留到一个栈上, 而你能够在任何时候从新利用这些改变(甚至在不同的分支上)。 先用 git status 查看下那些文件产生了变动 执行git stash 把所有改变都暂存起来此时的git stash等同于git stash push 能够给以后stash减少message,不便后续查看 此时 git status 发现以后分支变得跟没有改变时一样洁净 git stash list 查看以后栈中有多少暂存记录 如果要回复栈的最新一个暂存,能够git stash pop 取暂存中的某一份 git stash apply stash@{1} pop 和apply都能够复原暂存,然而,apply执行后,暂存记录还存在。pop则会从栈中移除。 更多操作,能够参考git的官网文档

October 25, 2021 · 1 min · jiezi

关于git:OneOSLite的源码管理方式子模块管理

前言简略清晰的代码构造有利于我的项目代码的治理。OneOS-Lite应用git submodule的形式来进行代码的治理。 其中,OneOS-Lite仓库为主存储库。而内核kernel,以及组件components和驱动drivers都将作为子模块的模式和OneOS-Lite主仓库关联治理。 检索子模块该命令git submodule能够查看主仓库中,已有的子模块或子仓库。 $ git submodule-ba2c4170016ff14db298c5e87134704996c5aff5 thirdparty/cJSON-e99c7b71349f74804eb215c59fa426bf5a357d8f thirdparty/telnetd拿以上举例: -代表该子模块仓库源码文件还未检入(空文件夹),没有-代表已检入;e99c7b71349f74804eb215c59fa426bf5a357d8f代表该子模块组件和OneOS-Lite所关联的版本id;thirdparty/telnetd代表该子模块仓库对应的目录和其组件名称。获取子模块应用git clone是不会把子模块仓库源码文件检入的,只会把拉取下来对应子模块组件的空文件夹。这时,如果须要应用某个子模块组件,能够应用以下命令: git submodule initgit submodule update xxx(子模块组件名,可通过git submodule查看已有的奉献组件)举个栗子: $ git submodule initSubmodule 'thirdparty/cJSON' (git@10.12.3.198:luoshunyuan/cJSON.git) registered for path 'thirdparty/cJSON'Submodule 'thirdparty/telnetd' (git@10.12.3.198:luoshunyuan/telnetd.git) registered for path 'thirdparty/telnetd'$ git submodule update thirdparty/telnetdCloning into 'D:/xiaoneng/oneos-2.0-test/thirdparty/telnetd'...Authorized users only. All activity may be monitored and reported.Submodule path 'thirdparty/telnetd': checked out 'e99c7b71349f74804eb215c59fa426bf5a357d8f'如果须要获取所有子模块仓库,能够间接应用git submodule update。 关联子模块通过我的项目根目录下的一个.gitmodules文件,能够发现曾经关联的子仓库,每增加一个子模块仓库就会新增一条记录。内容如下: [submodule "thirdparty/telnetd"] path = thirdparty/telnetd url = git@10.12.3.198:luoshunyuan/telnetd.git[submodule "thirdparty/cJSON"] path = cJSON url = git@10.12.3.198:luoshunyuan/cJSON.git持续关联新的子模块能够应用如下git命令,这里以telnetd为例: ...

October 19, 2021 · 1 min · jiezi

关于git:Git-笔记1

Git 的origin和master剖析 http://lishicongli.blog.163.c... 首先要明确一点,对git的操作是围绕3个大的步骤来开展的(其实简直所有的SCM都是这样) 从git取数据(git clone)改变代码将改变传回git(git push)这3个步骤又波及到两个repository,一个是remote repository,再近程服务器上,一个是local repository,再本人工作区上。其中 1, 3两个步骤波及到remote server/remote repository/remote branch, 2波及到local repository/local branch。git clone 会依据你指定的remote server/repository/branch,拷贝一个正本到你本地,再git push之前,你对所有文件的改变都是在你本人本地的local repository来做的,你的改变(local branch)和remote branch是独立(并行)的。Gitk显示的就是local repository。 在clone实现之后,Git 会主动为你将此近程仓库命名为origin(origin只相当于一个别名,运行git remote –v或者查看.git/config能够看到origin的含意),并下载其中所有的数据,建设一个指向它的master 分支的指针,咱们用(近程仓库名)/(分支名) 这样的模式示意近程分支,所以origin/master指向的是一个remote branch(从那个branch咱们clone数据到本地),但你无奈在本地更改其数据。 同时,Git 会建设一个属于你本人的本地master 分支,它指向的是你刚刚从remote server传到你本地的正本。随着你一直的改变文件,git add, git commit,master的指向会主动挪动,你也能够通过merge(fast forward)来挪动master的指向。 $git branch -a (to show all the branches git knows about) masterremotes/origin/HEAD -> origin/master remotes/origin/master $git branch -r (to show remote branches git knows about) origin/HEAD -> origin/master origin/master ...

October 19, 2021 · 1 min · jiezi

关于git:如何将本地项目上传到git仓库

这里做个笔记,当前遗记的话能够回顾一下。http://10.1.179.96:3000/haoxu...登录github账号1:关上我的项目文件夹下门路,Git bash命令行窗口通过命令来创立2:在命令行中输出git init把这个文件夹变成git可治理的仓库。这时候会发现sports-nums外面多了一个.git文件,它是git用来跟踪和治理版本库的。3:而后通过git add . (.代表sports-nums文件夹下的所有文件都提交)4: 能够通过git status查看下当初的状态5:上面就到了连贯近程仓库,因为本地git仓库和github仓库之间是通过近程加密的,所以连贯时须要设置一下,创立SSH Key6:用命令 git commit通知Git,把文件提交到仓库,引号内为提交阐明git commit -m 'first commit'7:关联到近程库git remote add origin 你的近程库地址,例如:git remote add origin https://github.com/githubuser... 7:获取近程库与本地同步合并(如果近程库不为空必须做这一步,否则前面的提交会失败)git pull --rebase origin master 8:把本地库的内容提交到近程git push -u origin master

October 18, 2021 · 1 min · jiezi

关于git:开发中的那些事提交代码前缀修饰

featfix新性能(feature)修补bugdocsstyle文档(documentation)格局(不影响代码运行的变动)refactorchore重构(既不是新增性能,也不是批改bug的代码)构建过程或辅助工具的变动revertperf撤销,版本回退性能优化testimprovement测试改良buildci打包继续集成

October 14, 2021 · 1 min · jiezi

关于git:GIT多仓库管理

简介咱们开发的时候,须要把代码同步到多个近程仓库中去。此次我的项目开发,咱们首先基于gitlib开发,开发到肯定阶段,咱们筹备开源,于是上线码云gitee,这时新建了一个仓库,以前的提交记录留在了内网的gitlab,并且当前的开发均在码云gitee进行。而后,因为内网我的项目需要,须要同步治理仓库gitlab和gitee,这个时候就须要同步代码了。 办法有很多,咱们介绍一种。 1.关联近程库咱们以gitee为主体,从gitee中clone出一份本地仓库。而后,关联gitlab的近程仓库: git remote add gitlab git@10.12.3.198:luoshunyuan/OneOS-Lite.git关联实现后,应用git remote -v查看: gitlab git@10.12.3.198:luoshunyuan/OneOS-Lite.git (fetch)gitlab git@10.12.3.198:luoshunyuan/OneOS-Lite.git (push)origin git@gitee.com:xuxeu/OneOS-Lite.git (fetch)origin git@gitee.com:xuxeu/OneOS-Lite.git (push)2.拉取gitee和gitlab代码因为,咱们的提交都以gitee为主,因而,首先拉取gitee的代码。 git pull 咱们在第一次同步的时候,须要拉取gitlab代码,并创立本地分支: git clone git@10.12.3.198:luoshunyuan/OneOS-Lite.gitgit checkout -b dev origin/dev3.提交到gitlab在关联好的gitee仓库中,执行命令来合并gitee代码到gitlab仓库中: git push gitlab dev 这是,如果报错无奈推送,则能够强制推送: git push gitlab dev -f 4.合并历史记录执行了第三步操作后,gitlab近程仓库中将只会存在强制推送的gitee的历史记录了。 但,还好咱们之前在第二步,有拉过gitlab代码,并创立了本地分支。因而咱们执行拉取操作,这时它会揭示咱们: fatal: refusing to merge unrelated histories这是能够执行以下命令,来疏忽版本不同造成的影响: git pull --allow-unrelated-histories而后,进行合并merge,推送代码。这时,咱们能够在近程仓库上看到,所有的历史记录都曾经回来了。 5.之后的同步之后的同步就比较简单了。每次都从gitee近程仓库拉取代码到本地,而后再次推送到gitlab即可。 关注&&分割gitee: https://gitee.com/cmcc-oneos/OneOS-Lite docs: https://oneos-lite.com/ 公众号:CMCC-OneOS

October 13, 2021 · 1 min · jiezi

关于git:迁移GIT仓库并带有历史提交记录

迁徙git仓库开发在很多时候,会遇到一个问题。GIT仓库的治理,特地是仓库的迁徙。我须要保留已有的历史记录,而不是从新开发,重头再来。 咱们能够这样做: 应用--mirror模式会把本地的分支都克隆。 // 先用--bare克隆裸仓库git clone git@gitee.com:xxx/testApp1.git --bare// 进入testApp1.git,这样就能够把所有分支都克隆到新仓库了git push --mirror git@gitee.com:xxx/testApp2.git咱们还能够这样做: git remote add gitlab git@gitee.com:xxx/testApp2.gitgit push gitlabgit checkout devgit push gitlab...这样的办法是,把testApp2作为新增的近程仓库,而后应用push一次推送一个分支。这种形式的益处是:迁徙的git仓库,只需迁徙指定的分支。 迁徙git仓库子目录下面的办法是整个仓库的迁徙,但如果只想迁徙git仓库的子目录,则能够应用git subtree,比方想要把仓库目录thirdparty\telnetd拆分进来作为一个新的库,并且还要带上她所有的历史提交记录。 首先,咱们同样须要新建一个新的空仓库(留神:不要带有任何初始化文件,包含README.md)。 而后,到主仓库执行以下git命令,就能够看到telnetd仓库已有代码了。 git subtree push --prefix=thirdparty/telnetd git@gitee.com:components/telnetd.git master这样,就实现子目录的迁徙啦,就是有个问题,好慢~ 关注&&分割gitee: https://gitee.com/cmcc-oneos/OneOS-Lite docs: https://oneos-lite.com/ 公众号:CMCC-OneOS

October 13, 2021 · 1 min · jiezi

关于git:同事说分支没什么用

后面曾经讲了大略的最罕用的git命令了,如果公司应用的是单分支开发,只有一个master分支,那能够说之前所说的能解决80%的问题了,这篇文章次要讲的就是多分支状况下的分支治理。 如果说正式版本须要用,然而又想不毁坏正式版本进行开发,这时候分支就非常重要了。咱们能够在分支上开发新的性能,而后再合并到主分支上,整个过程在合并之前对主分支来说是通明的。 创立分支须要明确一点,在本人本地创立分支的意义不大,就跟简略的复制粘贴一样,无奈实现本地的A分支批改后push到近程的A分支。真正的开发中,是要把本地的分支和近程的分支做个关联。这样在本地的A分支中开发能力push到近程的A分支。 首先克隆一个本人创立的仓库,应用git branch 查看本地分支能够看到只有一个master;接着用git branch -a查看所有分支,发现除了本地的master分支,还有近程的devleop,feature,master分支。 假如master是主分支,develop是开发分支,feature原本应该是个性分支,这里能够了解为补丁分支。比方SpringBoot4.2是主分支,那么可能SpringBoot5是开发分支,也就是下个迭代。然而SpringBoot4.3新增了个性,批改了bug,就是在个性分支中开发,而后合到主分支中。 仅仅是模仿,真实情况是这样子的 回到主题,近程有3个仓库,克隆的时候只会默认克隆主仓库,然而失常多分支开发的状况下个别是克隆全副分支或者特定分支的。应用git branch xxx origin/xxx 来特定的分支,一般来说是举荐本地的分支名和近程的分支名是一样的,这样便于开发。 如上,应用了git branch develop origin/develop ,意思是创立了一个名为develop分支,并且把远端的develop分支克隆到本地的分支。 Branch 'develop' set up to track remote branch 'develop' from 'origin'. 直译过去就是develop分支设置追踪了来自origin的develop分支,只有追踪了本地提交代码能力push到近程仓库对应的分支。执行完命令后,本地就有了3个和近程关联的分支。 切换分支后面的*号和高亮的中央就是代表了以后分支,如上图即示意以后分支是master分支,能够应用git checkout [branchName] 来实现分支的切换。 会有提醒说切换到了develop分支,并且应用git branch 命令查看也能看到以后分支。如果把这个命令和上一个命令联合起来,git checkout -b [branchName] 即为创立一个分支,并且切换到该分支下。 合并分支本地单个分支push到近程对应的分支就和失常的是一样的,无论咱们在哪个分支开发,最终都是为了主分支或者公布分支服务的,须要把其余分支的内容合入到主分支中。 切换到主分支,能够看到主分支只有两个文件切换到开发分支,并且新增了一个文件 接着add,commit, push,把它推送到近程的develop分支,能够看到近程的master分支并没有增加的文件。 接下来应该是把开发分支合并到主分支中,留神,在真正开发的过程中,个别主分支都会设置为爱护分支,咱们是没有权限的。有可能,有可能能够间接push到公司的近程其余分支,然而合并到主分支须要仓库管理员 ,这里只是一个模仿,所以说间接在本地操作了。 首先须要切换到主分支,应用git status 能够暂存区是没有其余货色的git merge [branchName] 从指标分支中合并到以后分支,本例中就是从develop分支合并内容到主分支应用git status 查看git状态能够看到合并后,本地的分支曾经当先近程的master分支了 接下来push后,在近程的master分支上就有了文件不同的分支之间的合并就和之前单master开发模式中从近程本地本人的仓库merge到近程公司的仓库一样,会存在抵触,本篇文章就不再赘述。删除分支一般来说咱们是不会去删除公司的分支的。 然而可能存在着咱们不想动和公司关联的分支,所以在本地创立了一个分支,相当于一个正本。在这个没有关联近程分支的分支上开发测试实现后再合并到近程的非master分支,这样就可能须要把这个分支删除。 创立一个名为backup的分支应用git branch -d [branchName] 删除方才创立的分支值得注意的一点就是,如果在A分支下想删除A分支是不被容许的 ...

October 10, 2021 · 1 min · jiezi

关于git:CMDA4654

CMDA-4654 HW4Due March 8th, 2019 Instructions You should must use R Markdown to do the assignment. Failure to compile your document results in a zero. You must turn in both your .Rmd file and your .pdf in the format Lastname_Firstname_HW4.pdf, please put both together in a .zip file with the same naming convention. Generalized Least Squares (GLS)The general linear model states thatY=X+, with ~N(0,2V)Y=X+, with ~N(0,2V) The matrix VV is a (symmetric) positive define matrix which means that we can factorize the matrix intoV=LLTV=LLTwhere LL is a lower-triangular matrix coming from the Cholesky decomposition. We can then muliply both sides of the linear model equation by L1L1which givesL1YZ=L1X+L1=B+L1Y=L1X+L1Z=B+where Z=L1YZ=L1Y, B=L1XB=L1X, and =L1=L1. ...

October 9, 2021 · 13 min · jiezi

关于git:Github-Desktop-纯萌新入门教程

GitHub 绝对于其余平台还是比拟敌对的,自带一个 Gui 软件,省去了敲命令的力量。 本篇教程送给我的室友。 注册一个 Github 账号应用 GitHub 首先得领有一个账号, 返回 Join GitHub · GitHub 注册账号,依照他的提醒来就行,比平时的网站注册要花里胡哨一点点。 邮箱用 mailto:QQ+@qq.com 比方 mailto:23333@qq.com 这种就行。 外面的词汇都比较简单,如果看不懂能够用浏览器自带的翻译器。 下载 Github Desktop返回 GitHub Desktop | Simple collaboration from your desktop 下载 Github Desktop 若官网下载太慢,能够在 联想软件商店 之类的软件里下载 下载完后也是惯例软件的装置形式。装置完后关上。 登录你的 Github 账号第一次关上软件应该会间接让你登录 GitHub 账号,依照他的疏导步骤登录就行。 如果没有找到让你登录 GitHub 账号的中央,你须要在 File -> Options -> Accounts -> Sign in 登录。 新建一个 Respiratory(我的项目)respiratory n. 贮藏室,仓库;知识库;智囊团,在这类咱们间接称为我的项目就好 第一步点击红色方框内区域 第二步点击红色方框所框选的按钮 “Add” -> 抉择 Create new respiratory… ...

October 8, 2021 · 1 min · jiezi

关于git:git-常用命令

前端两年开发教训平时用vs code开发,所以git工具也根本用的vs code的git插件,界面公爵,导致对git命令不太熟悉,感觉还是应该对git命令相熟一点的,所以缓缓记录一些git命令 本地同步更新分支(不会合并代码) git fetch关联本地分支对应到近程分支 git branch --set-upstream-to=origin/近程分支名称

October 8, 2021 · 1 min · jiezi

关于git:Git远程仓库

将本地仓库上传至github相干指令: git remote add origin git@xxx --在本地增加近程仓库的地址origin是近程仓库的默认名称,倡议不要更换git push -u origin master --将本地仓库的master分支提交到近程origin的master分支本地仓库可能存在多条分支,怎么把另外的分支上传到近程仓库?办法一 git push -u origin x:x --将本地x的分支提交到近程origin的x分支 右边代表源头,左边代表目的地办法二 git checkout x --切换分支 git push -u origin x从github下载近程仓库至本地相干命令: git clone git@?/xxx.git --该命令是在当前目录创立一个xxx目录,其实相当于在github上近程目录的仓库名未变更,残缺复制到当前目录下git clone git@?/xxx.git yyy --该命令是在当前目录新建一个yyy目录,其实相当于对从近程仓库下载的目录名重新命名git clone git@?/xxx.git . --该命令是使当前目录包容下载的代码和.git目录。留神当前目录最好是一个空目录。git stash --将你以后不想删除又不想提交的代码暂存到一个特定空间git stash pop-将你以后暂存在特定空间的代码取出来

October 4, 2021 · 1 min · jiezi

关于git:Git本地仓库

git config 参数--有六个命令行,运行完能力应用gitgit init -初始化,创立一个.git的目录,来当本地仓库git add 门路--形容哪些变动是须要提交的 备注:门路能够是绝对路径和相对路径.gitignore形容哪些变动是不须要提交的 常见:.vscode,.ideagit commit -m 字符串(提交的理由) 留神:如果字符串中有空格,须要用英文的双引号包起来git commit -v 与上一个git指令差不多的用处,不过这个指令能够更具体的让本人晓得本人具体批改了哪些地方,指令输入后会关上对应的编辑器,在下面能够文字输出相干备忘。(形容提交理由)git log 查问刚刚提交的记录(通过这个指令能够查看每次的提交记录,且不同的提交记录有对应的记录号) 备注:只会显示之前的提交git reset --hard 记录号 ----通过该指令能够跳转至以往的版本,这个记录号能够通过git log指令查问取得git reflog --查问以往的全副提交记录(当用git reset --hard回退到任意一个版本时,再次用git log进行查问时,前面提交的版本可能无奈查问到,这个时候能够应用这个指令查问全副的历史提交记录) 备注:可查看全副提交git branch 名称 --用于创立一个分支,基于以后commit创立的一个新的工夫线。备注:代码在哪个分支提交,就会呈现在哪个分支git branch -d 分支名称 --用于删除无用地分支git checkout 名称 --用于切换到另一个分支,git merge 分支名称 --将另一个分支内容合并到以后所在分支git status -sb --简化版地查看合并分支时呈现地抵触在什么中央总结: .git目录就是本地仓库删除一个目录外面的文件时,同样须要应用git add和git commit -v配合进行提交删除的操作,首先用rm指令对一个文件进行删除,而后应用git add命令标记变动,后应用git commit 指令进行提交3.git add .作用是把当前目录所有文件都提交

October 4, 2021 · 1 min · jiezi

关于git:git-中的对象

git 中的对象 blobtreecommitgit 中所有对象保留格局store = type + 空格 + #{content.字节数}+"\0"+contenthashValue = hash(store)hashValue[0,1] 文件夹, hashValue[2,-1] 作为文件名字 即 .git/objects/[头2个哈希字母]/残余的哈希值该文件的内容 为 zib 压缩 store的二进制文件blob 为 文本文件 tree 示意的目录 commit :以后根目录加上 提交人,提交msg 信息 git 中所有对象保留格局举例以后根目录:1.txt src (目录1.txt 外面的内容为12)src/1.java ,src/2.java blob 对象的store = blob +" " +2 +"\0"+12 tree 对应的对象就是目录, 即有2个目录, 一个是根目录, 一个是src 目录 tree 的content 格局比blob 简单 即是 mode + hash + path mode 示意文件的类型,100644 一般文件, 100755 可执行的文件 hash ,提到了过了 ,文件 就是下面的计算形式, 目录 就是递归就子目录,子文件。 ...

September 29, 2021 · 1 min · jiezi

关于git:你的文件需要git常用命令二

你的文件须要 git,常用命令 上一节次要介绍了 git 是什么?git 能做什么?github 是什么?如何注册与简略应用git 的配置文件git 单用户与多用户的配置github page 的简略应用好了,工具是有了,那么咱们就要理解如何应用它来进步咱们的效率,甚至解决工作中较常呈现的问题。 但但凡个程序员,必须要学会 git 的基本操作,无论是学生时代,还是工作职场,多多少少会点 git 的命令。 嗯,鄙人也是从学生时代正在缓缓逾越到工作中,从以前简略的git push与git pull扩大更多其余罕用的命令,免得咱们在工作上遇到问题手足无措,甚至呈现抓狂懊恼的一幕。 不过,我极力推荐一个在线交互式 git 命令学习的网站:https://learngitbranching.js.org/ 好了,多余的话也不再多说了,都在酒里... 创立仓库如果,咱们当初想要有一个这样的需要:本地的我的项目代码想上传到的近程仓库,该如何做? 咱们思考一下,本地仓库该如何和近程仓库关联呢?嗯,这是个问题呀 我做了一个这样的试验,我在桌面上创立了一个文件夹:git-test 文件夹中寄存了一个名为 README.md 的文件,而后终端输出一个git init的命令,这时候咱们cd到.git目录找到 config 文件 [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true ignorecase = true precomposeunicode = true[user] email = xxx@gmail.com name = Dreamcats好,咱们接下来去 github 上创立一个仓库,如图: 对于如何创立仓库,这里临时就不说了咩 从图中能够看到 近程仓库名为:ss-test如果是新我的项目,图中很显著教咱们如何做echo "# ss-test" >> README.md # 给README.md文件写入# ss-testgit init # git init 初始化命令,你就了解为生成一堆为仓库服务的git信息git add README.md # 这里在本地仓库批改的文件提交到本地暂存区git commit -m "first commit" # 给本次所提交的文件,给个正文,了解为版本正文git branch -M main # branch意为分支,git仓库的新性能,分支性能,为了协同,也为了不同版本git remote add origin git@github.com:DreamCats/ss-test.git # 本地仓库关联到近程仓库的桥梁git push -u origin main # 间接买通桥梁,开始上传如果是已有 git init 的我的项目,图中也通知你如何操作git remote add origin git@github.com:DreamCats/ss-test.git # 必须有的,和近程仓库关联git branch -M main # 仓库必须有个分支,当然你能够抉择master分支git push -u origin main # 推送操作我呢,首先在终端输出git remote add origin git@github.com:DreamCats/ss-test.git ...

September 29, 2021 · 4 min · jiezi

关于git:git指北

装置window Git下载linux 执行sudo apt-get install git // 装置实现之后还须要在命令行进行配置git config --global user.name "Your Name"git config --global user.email "email@example.com"根底概念Git 我的项目领有三个阶段 工作区(Working Directory):本地文件目录暂存区(Staging Ares): 已批改且add提交的文件快照区域Git 仓库(Repository): 暗藏目录.git 根本的 Git 工作流程如下在工作区中批改文件。将你想要下次提交的更改选择性地暂存,这样只会将更改的局部增加到暂存区。提交更新,找到暂存区的文件,将快照永久性存储到 Git 目录。常用命令git init // 创立仓库git add <file> // 增加文件到暂存区git conmit -m "commit messages" //把暂存区的所有内容提交到以后分支git log // 查看提交日志 --pretty=oneline 参数一行展现git log --graph --pretty=oneline --abbrev-commit //查看提交繁难信息git reflog //查看命令历史git status // 查看以后状态git reset HEAD <file> //版本回退 HEAD代表以后版本git checkout <name> // 切换分支 git checkout -- <file> //回到最近一次git commit或git add时的状态git checkout -b <branch-name> origin/<branch-name> // 在本地创立和近程分支对应的分支git resotre <file> // 从暂存区撤销文件 git rm -- <file> //删除文件git branch //查看分支git branch -a // 查看全副近程分支git branch <name> // 创立分支git branch -d <name> // 删除分支git branch --set-upstream-to=origin/<branch-name> <branch-name> // 指定本地分支与近程分支的链接git switch <name> // 切换分支(举荐)git merge <name> // 合并某分支到以后 --no-ff可能保留分支信息git cherry-pick <commit> //复制提交到以后分支git stash // 贮存当前工作内容git stash list // 贮存列表git stash apply // 复原贮存内容、不删除git stash apply stash@{0} // 复原指定版本git stash drop // 删除贮存内容git stash pop // 复原同时删除贮存内容git reset // 回退分支记录git revert // 撤销更改并分享给他人git remote -v // 查看近程库信息git pull // 拉取近程代码到本地git push origin <branch-name>// 推送本地代码到近程关联近程仓库获取本地SSH Key,在用户主目录里找到.ssh目录,外面有id_rsa和id_rsa.pub两个文,id_rsa是私钥,不能泄露进来,id_rsa.pub是公钥,能够释怀地通知任何人。如果不存在能够在git base 通过 ssh-keygen -t rsa -C "youremail@example.com" 创立github 创立repository// 1关联近程仓库git remote add origin <address>// 2 推送到近程仓库 -u 关联本地master和近程 mastergit push -u origin master

September 29, 2021 · 1 min · jiezi

关于git:你的文件需要-git保姆级别的搭建与使用一

你的文件须要 git,具体装置与应用 鄙人又来对 git 进行扯犊子了,扯来扯去,还是 git 最好用,如同是的。git 是什么?鄙人刚开始入门的时候也不晓得是什么,只是据说程序员每天离不开这个神器的工具。 Git 是目前世界上最先进的分布式版本控制系统(没有之一)。 什么是多版本控制?不便的举个例子 比方,如果你用 word 或者其余写作工具,必然有过这样的经验: 当初,我写毕设的时候,常常想删除一个段落,然而放心未来想复原却又找不回来怎么办呢?于是,我就把以后文件文件备份一个新的 word 文件等其余文件,再接着改,改到肯定水平,你就会发现,你文件夹中有很多文档,心中感叹:如同有点乱。手动滑稽...再者,协同方面,比方咱们两个人别离写一些文档,如果文档常常改变,合并的时候会呈现大问题,如果有一个工具或者软件能记录每次文件的改变,那岂不是在软件里瞅一眼就明确了?岂不是很不便?此软件岂不是 git?大略分为三个平台装置一下 git,废话不多说,间接上菜 windows官网下载安装即可终端测试git --versionLinuxsudo apt-get install git 留神:这是 ubuntuyum install git 留神:这是 centos终端测试git --versionmacmac 自带可用终端查看where git鄙人用了 mac 多年,就 mac 给大家上个图: 顺便提一下 Github难道真不会有人不晓得 Github 是什么吧? 全世界公认的代码仓库,渍渍,话都说到这个份子上了,我就不得不提鄙人的 Github 了,嘻嘻。 来吧,https://github.com/DreamCats 来吧,我丢,丧心病狂,打广告还放个图 好吧,鄙人挺无耻的,不慌,马上开始 官网:链接 进入官网点击右上角Sign up Username:你的 github 名字,也能够当作登陆账户Email address:你的邮箱,也能够当作登陆账户Password:登陆密码Email preferences:有什么社交信息,能够邮件告诉,看状况Verify your account:以前没这个的,当初为了增强,搞了个验证,验证即可。注册之后,登陆页面 右上角能够看到头像,点击一下有菜单栏如上图所示,有你的个人主页、你的仓库等,上面还有你的设置能够在设置外面,更改头像,名称,SSH 钥匙等关联关联?其实鄙人的意思是将本地的 git 关联到你的 github 仓库 在关联之前,说一下 Git 的配置文件塞 ...

September 27, 2021 · 2 min · jiezi

关于git:Git-CAfile-cabundlecrt-CApath-none

1. 问题形容第一次尝试推送IDEA我的项目到远端GitHub仓库。实现最初一步push过程中呈现点问题。 报错图: 残缺报错信息: 19:26:29.537: [JavaProjects] git -c credential.helper= -c core.quotepath=false -c log.showSignature=false push --progress --porcelain origin master --set-upstream fatal: unable to access 'https://github.com/xxxxx/JavaSE_learning.git/': error setting certificate verify locations: CAfile: D:/main/program/dev/Git/Git/mingw64/ssl/certs/ca-bundle.crt CApath: none 19:29:16.879: [JavaProjects] git -c credential.helper= -c core.quotepath=false -c log.showSignature=false push --progress --porcelain origin refs/heads/master:master --set-upstreamfatal: unable to access 'https://github.com/xxxxx/JavaSE_learning.git/': error setting certificate verify locations: CAfile: D:/main/program/dev/Git/Git/mingw64/ssl/certs/ca-bundle.crt CApath: none剖析: 具体就是xxx/certs/ca-bundle.crt文件门路没有。 2. 问题剖析遇到这个报错才意识到,之前从新卸载装置了git,注册表信息没有批改,导致之前的配置信息(门路)还保留着。 3. 问题解决S1: 依据报错信息,找到正确门路下的ca-bundle.crt文件门路。 ...

September 26, 2021 · 1 min · jiezi

关于git:GIT分支操作

刷新本地分支首先查看一下本地分支的状态,最新的一条记录是减少了b.txt文件[root@supman git]# git branch -avv* master 3608563 [origin/master] add b.txt. remotes/origin/master 3608563 add b.txt.而后咱们在另外分支,或者间接在gitee仓库中改变一下仓库中的内容,应用 git fetch命令刷新本地分支,看一下分支状态,会发现有新的变动[root@supman git]# git fetchremote: Enumerating objects: 4, done.remote: Counting objects: 100% (4/4), done.remote: Compressing objects: 100% (2/2), done.remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0Unpacking objects: 100% (3/3), done.来自 https://gitee.com/codeyuany/git 3608563..cbf22f8 master -> origin/master[root@supman git]# git branch -avv* master 3608563 [origin/master:落后 1] add b.txt. remotes/origin/master cbf22f8 add c.txt.[root@supman git]# 应用git merge或者git rebase命令能够把近程仓库中的内容合并到本地,其实 git fetch + git merge恰好等同于之前用过的git pull ...

September 23, 2021 · 2 min · jiezi

关于git:记录一次git合并过程冲突解决过程

在一次性能开发实现后,筹备将feature分支合并到develop分支,提pr并将feature分支合并到develop分支时,查看diff时发现异常。在筹备合并前,曾经将develop分支merge到feature分支,并且批改的局部只在一个专门的moduleA里,实践上diff的后果中应该只蕴含批改的moduleA的内容,然而却呈现了大量其余moduleB的批改,并且奇怪的是甚至呈现了旧的操作记录笼罩新的操作记录的状况,也就是上次从develop分支merge到feature分支的的moduleB的旧记录把本次develop上moduleB的新记录笼罩了。 调试过程,先找到最近的一次失常的commit_0,而后一一查看从commit_0到最近的commit_last的所有commit,定位到两次commit有问题,一次是抉择了提交时主动格式化,将moduleB的代码格式化了,这次之前尝试revert,然而操作时理论只revert了本地分支,在push到remote时,再次和原分支合并了,导致revert失败。另一次commit,在操作记录里显示将旧的全副从新提交了一次,尽管代码没有批改,然而代码的工夫戳全副批改了,这也就导致了在把develop的新操作merge到feature分支时,新操作反而被旧操作笼罩的景象。 修复过程,将feature分支revert到失常的commit_0,并抉择soft revert,也就是保留了所有的commit,而后将moduleB的批改全副revert,而后从新提交。问题解决!

September 23, 2021 · 1 min · jiezi

关于git:git安装报错的处理方式

问题形容git装置过程中报错 而后在cmd命令中应用时git不行,报错 git : 无奈将“git”项辨认为 cmdlet、函数、脚本文件或可运行程序的名称。解决方案应用管理员权限装置git配置零碎环境变量window10的平安进行了降级,在装置git时须要应用管理员权限进行装置,否则报错

September 23, 2021 · 1 min · jiezi

关于git:淦冲突的时候同事非得说他才是对的怎么办

上篇文章把平时最最最常常用到的一些命令,然而根本是惯例状况下,接下来讲讲不太失常状况下的命令。 首先,咱们在本地最间接接触的是近程本人仓库,至于近程他人的仓库(大家独特批改文件的仓库,后文简称近程仓库)次要是通过近程本人的仓库进行mr。 那么咱们如何保障本人的仓库外面有他人的批改呢 pull能够看到近程仓库外面有个others.txt文件,而本地是没有的,为了能让本地和近程仓库同步,就须要用到pull 和push是对应的,个别前面也会跟着近程仓库的地址(上一篇文章中简略地说了下如何设置不同的近程仓库的地址) mr时conficts能够发现本地也曾经有了新增的文件。留神,咱们批改的文件也是在近程仓库中的,那如果他人感觉咱们的文件写得不够好而后批改了。 就比方上次提交的helloworld,感觉不行,太简略了,只打印了一次,而后加了个for循环打印了100次,并且在每次打印前面加上序号。 于此同时,咱们也感觉代码也得不够好,须要反复执行1000遍,并且想在输入完后再来一句经典台词,于是乎咱们改了本地的代码。 接着心高彩烈地push了代码,并且提起了Merge Request,也有的平台称为Pull Request,这时候就会发现 有告警此Pull Request无奈主动合并,你应该手动合并它 ,其实就是你和其他人同时批改了文件中的对立行,抵触了。之后就得是解决抵触,不同平台的解决抵触的界面应该不同,然而实质都是git。 此时就须要到程序员之间讨(撕)论(b),到底是以谁的为准,这里假如这种,放弃前面的i + 1 然而须要循环1000次。所以就须要批改为 其实这个文件的代码原则上你删了都没关系,因为git曾经跟你说这个文件有抵触了,至于如何抉择,须要保留什么,git感觉咱们会解决好的。当实现这所有之后就和之前的mr是统一的,审核通过就能够合入了 然而在mr的时候再去解决抵触,总感觉有点麻烦,所以个别工作中罕用的做法就是在commit之后,先pull一下最新代码 pull时conflicts能够看到近程的仓库此时是这样滴 而后近程对文件进行了批改,模仿其余共事合入了新代码 同样在不晓得的状况下,咱们想要增加一个getStr的办法,并且在main函数外面调用 编辑完后失常add,commit,然而不要push,先pull一下近程仓库的代码 在最初能够看到一个这样的信息,就是让咱们解决抵触 Auto-merging hello.javaCONFLICT (content): Merge conflict in hello.javaAutomatic merge failed; fix conflicts and then commit the result.如何解决呢,就是编辑抵触的文件即可,用vim来看下抵触的文件此时长啥样 只须要把<<<<<<< ,======= 和>>>>>>> 还有HEAD这些非咱们想要的字符删掉,而后保留须要的代码,最初就失常add commit push mr即可。 这时候必定会有刚学的小伙伴就问了,那如果改的期间别的人又往仓库中合入了代码咋办呢 开玩笑开玩笑,然而这种状况99.99%只会存在在实践中,事实工作中根本不会呈现,如果凑巧碰到了那就再解决抵触呗。 stash咱们批改了多个文件比方批改了ABCDEF...Z这26个文件主管就过去说有个模块十分急,须要先合入ABCD这4个文件近程仓库曾经有人合入了LX这两个文件而后记得养成良好的习惯,commit后pull一下近程代码库总结就是不想提交所有批改的文件,且批改的文件中有抵触的状况下 意思就是,本地有些文件可能在合入的时候被覆写,此时有两种抉择 commit,而后解决抵触stash,而后pull下来,之后stash pop的时候如果有抵触,解决抵触stash就是把本地的所批改的先放在一个git的“堆栈”中,本地对近程就是未修改的状态,而后就能失常的pull ...

September 20, 2021 · 1 min · jiezi

关于git:两条命令让你的git自动变基

为什么要变基Git官网文档中提到: 在 Git 中整合来自不同分支的批改次要有两种办法:merge 以及 rebase。merge也就是合并,这个概念很容易了解,咱们从分支上拉取代码进行批改,再提交的时候,如果遇到了他人的批改,则把咱们的批改和他们的批改合并一下。那么rebase中文译为变基是什么意思呢?首先要了解这个base,base也就是根底的意思,当咱们从代码分支上获取代码的时候,咱们就有了一个根底,也就是base,尔后的批改咱们都是在这个根底之上进行的,然而当咱们须要提交批改的时候,遇到了他人的代码,变基这个操作就是在这个时候,咱们不去合并他人的代码,而是间接把咱们原先的根底变掉,变成以他人批改过后的新代码为根底,把咱们的批改在这个新的根底之上从新进行。根底变掉了,所以叫作变基。 那么,变基有什么益处呢?益处之一是能够使咱们的工夫线变得十分洁净,以前采纳合并的时候,工夫线里残缺记录了咱们的代码是从哪个根底上拉取出来的,做了哪些批改,而后又在哪个工夫点合并回分支去,而采纳变基之后,工夫线上不再反映拉取的工夫点,因为每次提交都是以最新代码为根底的,所以工夫线就变成了一根直线。 上面拿两个实在例子给大家更直观地看一下: 这是采纳主动变基之前的工夫线,能够看到,各种凌乱: 这是采纳主动变基之后的工夫线,十分参差,能够很分明地看到哪一次批改之后又产生了什么批改,而不是屡次批改纠缠在一起: 主动变基尽管网上对于变基的教程很多,然而个别初学者总会感到茫然,不敢轻易下手,怕万一把工夫线弄坏了,一发不可收拾。而且所有对于变基的命令都和咱们曾经多年习惯了的pull/add/commit/push不一样,很多图形化的工具例如vscode也不间接反对rebase这样的命令,都须要手工输出,繁琐而且容易出错。所以咱们明天不讲太多的rebase命令怎么用,而间接用两条命令设置一下,从此以后让你每次提交都能够主动变基,而不用扭转之前的任何操作习惯。这两条命令就是: git config --global pull.rebase truegit config --global rebase.autoStash true这两条命令在任意一台电脑上都只须要设置一次,而且一次设置,全局失效,所有的我的项目当前每次pull/push都会主动变基,再也不必放心在提交之前遗记变基了。 原理如果不想理解原理的话,则执行完下面两条命令就能够去开心地变基了,齐全没有问题。如果想理解一些原理,能够接着往下看。上面咱们来具体解释一下这两条命令的原理: 首先,咱们要搞清楚一点:什么机会是变基的机会?个别了解是推送的时候,其实不是,而是从拉取的时候就要开始变基了,因为你拉取的时候,服务器上可能曾经有新代码了,所以要变基也是在这个时候,一旦发现有新根底了,则立马变掉。所以,通常状况下,咱们拉取新代码无非就是一个命令:git pull,但当初咱们要变基拉取,就须要用git pull --rebase。然而每次这样执行命令就会很麻烦,而且你在vscode里也没有方法主动加这个参数,所以为了不便起见,咱们就设置一下第一条命令,这样每次拉取它都会主动变基。 然而主动变基往往会带来一个额定的问题,那就是每次当你手头有正在编辑的文件的时候,它就说它无奈变基,因为你的工作区不洁净。为什么不变基的时候没有这个问题,而一旦抉择了主动变基,工作区就必须放弃洁净呢?因为变基的操作原理是它须要先把你本地代码库里还没有推送的那局部提交反向开释到工作区,而后从服务器拉取新代码,再以新代码为根底把工作区里的批改附加下来,因为有这个过程,所以它必须要求你的服务区是洁净的。为此git提了两个倡议:要么你把所有批改先全副都commit到本地,要么你把它们都stash保存起来。首先说,commit必定不是一个好主见,因为很有可能这时候咱们的工作做到一半,还不适宜commit,如果每次pull都commit一下的话,那么分支树上会多出很多无用的节点。那只剩下最初一个抉择,就是每次pull之前都stash一下,pull完了之后再把stash的内容pop进去,但这样岂不是更麻烦?所以这里咱们用第二条命令设置一下,每次rebase的时候都主动把咱们工作区里的内容主动stash进去,rebase实现之后再主动复原进去。 其余要留神的就是有抵触的时候,如果有抵触,则合并完抵触之后,执行一下git rebase --continue就好了,其它和原先的用法没有任何区别。

September 20, 2021 · 1 min · jiezi

关于git:git提交也有规范看下鹅厂是怎么做的

一、目标无规矩不成方圆,当查看git提交历史的时候,发现每个人git的提交记录都有本人的格调和习惯,并没有一套残缺的标准,不利于浏览和保护。所以须要一套git提交标准,使得提交记录清晰明了,让人一看就能晓得此次提交的目标。 二、业界比拟认可和罕用的标准AngularJS是目前应用最广的一种标准,比拟正当和零碎,也有相应的工具和插件反对。 标准构造: 三局部组成:header(要害)、body(可省略)、footer(可省略) 倡议这三个局部,每个局部的字符都不要超过100字符,防止主动换行影响好看 // 头header<type>(<scope>): <subject> // 空一行<body>// 空一行<footer>1、header(要害)记录次要的批改类型和内容 由三个局部组合:type(必填)、scope(可选)、subject(必填) 1.1、type必填,message的类型,有以下几种罕用的类型 feat:提交新的性能,记忆:featurefix:解决了bugdocs:批改的是文档相干的内容,记忆:documentationstyle:格局批改,没有批改代码逻辑,比方格式化、换行等refactor:重构代码,既没有新增性能,也没有修复bug,比方提取某段代码为一个办法、重构某个性能perf:性能、体验优化等,记忆:performance性能test:新增test用例或批改现有测试用例chore:构建过程或辅助工具的变动,非src和test的批改,比方构建流程, 依赖治理等当同时有feat、fix和其余类型时,类型取feat、fix。 1.2、scope非必填,用于阐明此次提交影响的范畴,比方数据层、管制层、视图层等 1.3、subject必填,此次提交的简短形容 动词结尾,第一人称当初时,比方add,而不必added、adds第一个字母小写句尾不加句号(.)2、body(可省略)具体的形容,可多行,与header之间空一行 3、footer(可省略)footer只用于以下两种状况 不兼容变动以BREAKING CHANGE结尾,前面是变动的形容、变动的理由以及迁徙的办法 什么叫不兼容变动,比方用户明码的加密形式产生扭转 敞开issue以后提交批改了某个issue 整体的git message如下 feature(数据层): 简短形容详细描述BREAKING CHANGE: 不兼容变动Closes 敞开issue三、idea插件晓得了提交的标准,然而常常记不住格局怎么办? 这时弱小的idea插件Git Commit Message Helper,真香 1、装置在settings->plugins,搜寻Git Commit Message Helper,点击install并重启即可 2、应用在git提交页面,点击create commit message按钮,弹出如下窗口,编辑之后,点击ok 在以下弹窗输出信息 提交的message如下 关注公众号:臻大虾,分享java后端技术干货,每天提高一点点

September 19, 2021 · 1 min · jiezi

关于git:巧用git-stash暂存代码到本地解决冲突暂存文件

暂存文件&&常用命令(1)git stash save "save message": 执行存储时,增加备注,不便查找,只有git stash 也要能够的,但查找时不不便辨认。 (2)git stash list :查看stash了哪些存储 (3)git stash show :显示做了哪些改变,默认show第一个存储,如果要显示其余存贮,前面加stash@{$num},比方第二个 git stash show stash@{1} (4)git stash show -p : 显示第一个存储的改变,如果想显示其余存存储,命令:git stash show stash@{$num} -p ,比方第二个:git stash show stash@{1} -p (5)git stash apply :利用某个存储,但不会把存储从存储列表中删除,默认应用第一个存储,即stash@{0},如果要应用其余个,git stash apply stash@{$num} , 比方第二个:git stash apply stash@{1} (6)git stash pop :命令复原之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应批改利用到以后的工作目录下,默认为第一个stash,即stash@{0},如果要利用并删除其余stash,命令:git stash pop stash@{$num} ,比方利用并删除第二个:git stash pop stash@{1} (7)git stash drop stash@{$num} :抛弃stash@{$num}存储,从列表中删除这个存储 (8)git stash clear :删除所有缓存的stash 本地解决代码抵触1、git stash 暂存文件2、git pull 拉取最新代码3、git stash pop 把暂存文件复原4、解决抵触5、提交代码 ...

September 17, 2021 · 1 min · jiezi

关于git:拉取项目分支过程

参考:https://blog.csdn.net/qq_3972... ----------------对应的代码----------------qzxl@qzxl-08 MINGW64 ~/Desktop/userManag$ git initInitialized empty Git repository in C:/Users/qzxl/Desktop/userManag/.git/ qzxl@qzxl-08 MINGW64 ~/Desktop/userManag (master)$ git remote add origin git@192.168.1.101:campus/frontend.git qzxl@qzxl-08 MINGW64 ~/Desktop/userManag (master)$ git branch qzxl@qzxl-08 MINGW64 ~/Desktop/userManag (master)$ git fetch origin devfatal: couldn't find remote ref devfatal: the remote end hung up unexpectedly qzxl@qzxl-08 MINGW64 ~/Desktop/userManag (master)$ ^C qzxl@qzxl-08 MINGW64 ~/Desktop/userManag (master)$ git fetch origin jiangningOAremote: Enumerating objects: 642, done.remote: Counting objects: 100% (642/642), done.remote: Compressing objects: 100% (64/64), done.Receivremote: Total 2483 (delta 610), reused 578 (delta 578), pack-reused 1841Receiving objects: 100% (2483/2483), 1.06 MiB | 23.11 MiB/s, done.Resolving deltas: 100% (1424/1424), done.From 192.168.1.101:campus/frontend ...

September 16, 2021 · 1 min · jiezi

关于git:第十二篇-Git-服务器搭建之Spring-Cloud直播商城-b2b2c电子商务技术总结

Git 服务器搭建上一章节中咱们近程仓库应用了 Github,Github 公开的我的项目是收费的,2019 年开始 Github 公有存储库也能够无限度应用。 这当然咱们也能够本人搭建一台 Git 服务器作为公有仓库应用。 接下来咱们将以 Centos 为例搭建 Git 服务器。 1、装置Git $ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel$ yum install git接下来咱们 创立一个git用户组和用户,用来运行git服务: $ groupadd git$ useradd git -g git 2、创立证书登录收集所有须要登录的用户的公钥,公钥位于id_rsa.pub文件中,把咱们的公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。 如果没有该文件创建它: $ cd /home/git/$ mkdir .ssh$ chmod 755 .ssh$ touch .ssh/authorized_keys$ chmod 644 .ssh/authorized_keys3、初始化Git仓库首先咱们选定一个目录作为Git仓库,假设是/home/gitrepo/xxx.git,在/home/gitrepo目录下输出命令: $ cd /home$ mkdir gitrepo$ chown git:git gitrepo/$ cd gitrepo$ git init --bare xxx.gitInitialized empty Git repository in /home/gitrepo/xxx.git/以上命令Git创立一个空仓库,服务器上的Git仓库通常都以.git结尾。而后,把仓库所属用户改为git: ...

September 10, 2021 · 1 min · jiezi

关于git:第十一篇-Git-Gitee之Spring-Cloud直播商城-b2b2c电子商务技术总结

Git Gitee大家都晓得国内拜访 Github 速度比较慢,很影响咱们的应用。 如果你心愿体验到 Git 飞个别的速度,能够应用国内的 Git 托管服务——Gitee(gitee.com)。 Gitee 提供收费的 Git 仓库,还集成了代码品质检测、我的项目演示等性能。对于团队合作开发,Gitee 还提供了项目管理、代码托管、文档治理的服务,5 人以下小团队收费。 接下来咱们学习一下如何应用 Gitee。 因为咱们的本地 Git 仓库和 Gitee 仓库之间的传输是通过SSH加密的,所以咱们须要配置验证信息。 1、咱们先在 Gitee 上注册账号并登录后,而后上传本人的 SSH 公钥。 咱们在 Git Github 章节曾经生成了本人的 SSH 公钥,所以咱们只须要将用户主目录下的 ~/.ssh/id_rsa.pub 文件的内容粘贴 Gitee 上。 抉择右上角用户头像 -> 设置,而后抉择 "SSH公钥",填写一个便于辨认的题目,而后把用户主目录下的 .ssh/id_rsa.pub 文件的内容粘贴进去:!接下来咱们看下连贯信息:项目名称最好与本地库保持一致。 而后,咱们在本地库上应用命令 git remote add 把它和 Gitee 的近程库关联: git remote add origin git@gitee.com:imnoob/xxx-test.git之后,就能够失常地用 git push 和 git pull 推送了! 如果在应用命令 git remote add 时报错:git remote add origin git@gitee.com:imnoob/xxx-test.gitfatal: remote origin already exists.这阐明本地库曾经关联了一个名叫 origin 的近程库,此时,能够先用 git remote -v 查看近程库信息: ...

September 10, 2021 · 1 min · jiezi

关于git:第十篇-Git-远程仓库Github之Spring-Cloud直播商城-b2b2c电子商务技术总结

Git 近程仓库(Github)Git 并不像 SVN 那样有个核心服务器。 目前咱们应用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其余开发人员单干。 你就须要将数据放到一台其余开发人员可能连贯的服务器上。 本例应用了 Github 作为近程仓库,你能够先浏览咱们的 Github 扼要教程。增加近程库要增加一个新的近程仓库,能够指定一个简略的名字,以便未来援用,命令格局如下: git remote add [shortname] [url]本例以 Github 为例作为近程仓库,如果你没有 Github 能够在官网 https://github.com/注册。 因为你的本地 Git 仓库和 GitHub 仓库之间的传输是通过SSH加密的,所以咱们须要配置验证信息: 应用以下命令生成 SSH Key: $ ssh-keygen -t rsa -C "youremail@example.com"前面的 your_email@youremail.com 改为你在 Github 上注册的邮箱,之后会要求确认门路和输出明码,咱们这应用默认的一路回车就行。 胜利的话会在 ~/ 下生成 .ssh 文件夹,进去,关上 id_rsa.pub,复制外面的 key。 $ ssh-keygen -t rsa -C "429240967@qq.com"Generating public/private rsa key pair.Enter file in which to save the key (/Users/tianqixin/.ssh/id_rsa): Enter passphrase (empty for no passphrase): # 间接回车Enter same passphrase again: # 间接回车Your identification has been saved in /Users/tianqixin/.ssh/id_rsa.Your public key has been saved in /Users/tianqixin/.ssh/id_rsa.pub.The key fingerprint is:SHA256:MDKVidPTDXIQoJwoqUmI4LBAsg5XByBlrOEzkxrwARI 429240967@qq.comThe key's randomart image is:+---[RSA 3072]----+|E*+.+=**oo ||%Oo+oo=o. . ||%**.o.o. ||OO. o o ||+o+ S ||. || || || |+----[SHA256]-----+回到 github 上,进入 Account => Settings(账户配置)。右边抉择 SSH and GPG keys,而后点击 New SSH key 按钮,title 设置题目,能够轻易填,粘贴在你电脑上生成的 key。增加胜利后界面如下所示为了验证是否胜利,输出以下命令: ...

September 10, 2021 · 3 min · jiezi

关于git:第二篇-Git-安装配置之Spring-Cloud直播商城-b2b2c电子商务技术总结

Git 装置配置在应用Git前咱们须要先装置 Git。Git 目前反对 Linux/Unix、Solaris、Mac和 Windows 平台上运行。 Git 各平台安装包下载地址为:http://git-scm.com/downloads Linux 平台上装置Git 的工作须要调用 curl,zlib,openssl,expat,libiconv 等库的代码,所以须要先装置这些依赖工具。 在有 yum 的零碎上(比方 Fedora)或者有 apt-get 的零碎上(比方 Debian 体系),能够用上面的命令装置: 各 Linux 零碎能够应用其安装包管理工具(apt-get、yum 等)进行装置: Debian/UbuntuDebian/Ubuntu Git 装置命令为: $ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \ libz-dev libssl-dev$ apt-get install git$ git --versiongit version 1.8.1.2Centos/RedHat如果你应用的零碎是 Centos/RedHat 装置命令为: $ yum install curl-devel expat-devel gettext-devel \ openssl-devel zlib-devel$ yum -y install git-core$ git --versiongit version 1.7.1源码装置咱们也能够在官网下载源码包来装置,最新源码包下载地址:https://git-scm.com/download 装置指定零碎的依赖包: ########## Centos/RedHat ##########$ yum install curl-devel expat-devel gettext-devel \ openssl-devel zlib-devel########## Debian/Ubuntu ##########$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \ libz-dev libssl-dev解压装置下载的源码包 ...

September 8, 2021 · 2 min · jiezi

关于git:第一篇-Git-教程之Spring-Cloud直播商城-b2b2c电子商务技术总结

Git 教程Git 是一个开源的分布式版本控制系统,用于麻利高效地解决任何或小或大的我的项目。 Git 是 Linus Torvalds 为了帮忙治理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与罕用的版本控制工具 CVS, Subversion 等不同,它采纳了分布式版本库的形式,不用服务器端软件反对。Git 与 SVN 区别Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。 如果你是一个具备应用 SVN 背景的人,你须要做肯定的思维转换,来适应 Git 提供的一些概念和特色。 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 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时升高对版本库的毁坏。

September 8, 2021 · 1 min · jiezi

关于git:SAP-Spartacus-的-git-flow-和发布流程

Git Flow and Release Process Library Version CompatibilitySpartacus 我的项目由一组库组成。 为了更容易晓得哪个版本的库与另一个版本兼容,库版本在所有包之间同步。 这意味着当咱们要公布 1.5.0 版本时,咱们会公布此版本下的所有库,即便某些库自上一版本以来没有任何更改。 这样做时,咱们能够应用单个版本号来援用任何给定版本的整个 Spartacus 库集。 这也意味着您能够确信,如果您装置所有具备雷同版本的软件包,那么所有都将失常工作。 不同版本的库能够很好地协同工作,但咱们不会测试这些配置,也不能保障正确的行为。 version support对于版本控制,咱们遵循语义版本控制,也称为 SemVer。 除了稳固版本,Spartacus 还生产 next 和 rc 版本。 咱们对版本的假如如下: Stable 版本是通过良好测试的 Spartacus 版本(包含社区测试),并且只会修补谬误。这些版本在 npm 上的最新标签下可用。当 Spartacus 团队实现该版本所有新性能的开发后,就会公布一个 rc 版本,这意味着性能和公共 API 不会有任何重大变动。社区能够平安地开始测试 rc 版本中的性能。 rc 版本可能蕴含一些谬误,这些谬误将在稳固版本公布之前修复。当没有更多谬误并且社区进行报告该版本的问题时,咱们会持续制作稳固版本。当 Spartacus 团队实现特定性能时,将公布一个 next 版本。这容许社区立刻开始测试该性能。这些 next 版本可能蕴含很多谬误,性能和公共 API 可能仍会发生变化。如果您想尽快测试新性能,这是适宜您的版本。下一个版本在 npm 上的 next 标签下可用。留神:强烈建议您不要在生产设置中应用 next 版本。这是因为从next 版本升级可能比从一个稳固版本升级到另一个要艰难得多。 Support Policy始终反对至多一个稳固或 rc 版本。 一旦版本 x.y 公布,它将被踊跃保护,直到版本 x.z 的新稳定版或 rc 公布。 届时,版本 x.z 将成为踊跃保护的版本,下一个版本的工作将开始。 ...

September 6, 2021 · 2 min · jiezi

关于git:大型开发项目中-git-工作流的最佳实践

Gitflow Workflow 是一个 Git 工作流,有助于继续软件开发和施行 DevOps 实际。 它由文森特·德里森 (Vincent Driessen) 在 nvie 首次出版并广受欢迎。 Gitflow 工作流定义了围绕我的项目公布设计的严格分支模型。 这为治理大型项目提供了一个弱小的框架。 Gitflow 非常适合具备预约公布周期的我的项目以及继续交付的 DevOps 最佳实际。 除了性能分支工作流所需的内容之外,此工作流不会增加任何新概念或命令。 相同,它为不同的分支调配十分具体的角色,并定义它们应该如何以及何时交互。 除了性能(feature)分支之外,它还应用独自的分支来筹备、保护和记录公布。 当然,您还能够利用 Feature Branch Workflow 的所有劣势:拉取申请、独立试验和更高效的合作。 Getting StartedGitflow 实际上只是 Git 工作流的一个抽象概念。 这意味着它决定了要设置什么样的分支以及如何将它们合并在一起。 咱们将涉及以下分支的目标。 git-flow 工具集是一个具备装置过程的理论命令行工具。 git-flow 的装置过程很简略。 git-flow 软件包可在多个操作系统上应用。 在 OSX 零碎上,您能够执行 brew install git-flow。 在 Windows 上,您须要下载并装置 git-flow。 装置 git-flow 后,您能够通过执行 git flow init 在您的我的项目中应用它。 Git-flow 是 Git 的包装器。 git flow init 命令是默认 git init 命令的扩大,除了为您创立分支外,不会更改存储库中的任何内容。 ...

September 6, 2021 · 2 min · jiezi

关于git:Git最强总结

本文曾经收录到Github仓库,欢送大家围观、star。此仓库用于分享Java外围常识,包含Java根底、MySQL、SpringBoot、Mybatis、Redis、RabbitMQ等等,面试必备。 github地址:https://github.com/Tyson0314/... 如果github拜访不了,能够拜访gitee仓库。 gitee地址:https://gitee.com/tysondai/Ja... Git 简介Git 是一个开源的分布式版本控制系统,能够无效、疾速的进行我的项目版本治理。Git 是 Linus Torvalds 为了帮忙治理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git工作流程Git工作流程如下: 从近程仓库中克隆资源作为本地仓库;在本地仓库中进行代码批改;在提交本地仓库前先将代码提交到暂存区;提交批改,提交到本地仓库。本地仓库中保留批改的所有历史版本;在须要和团队成员共享代码时,能够将批改的代码push到近程仓库。Git 的工作流程图如下: 图片起源:https://blog.csdn.net/ThinkWo...存储原理Git 在保留我的项目状态时,它次要对全副文件制作一个快照并保留这个快照的索引,如果文件没有被批改,Git 不会从新存储这个文件,而是只保留一个链接指向之前存储的文件。 Git 快照快照就是将旧文件所占的空间保留下来,并且保留一个援用,而新文件中会持续应用与旧文件内容雷同局部的磁盘空间,不同局部则写入新的磁盘空间。 三种状态Git 的三种状态:已批改(modified)、已暂存(staged)和已提交(committed)。已批改示意批改了文件,但还没保留到数据库。已暂存示意对一个已批改文件的以后版本做了标记,使之蕴含在下次提交的快照中。已提交示意数据曾经平安的保留到本地数据库。 根本的 Git 工作流程:在工作目录批改文件;暂存文件,将文件快照放到暂存区域;提交更新到本地库。暂存区保留了下次将要提交的文件列表信息,个别在 Git 仓库目录中。 图片起源:https://img2018.cnblogs.com/blog/1252910/201907/1252910-20190726163829113-2056815874.png 配置设置用户名和邮箱地址: git config --global user.name "dabin"git config --global user.email xxx@xxx.com如果应用了 --global 选项,那么该命令只须要运行一次,因为之后无论你在该零碎上做任何事件,Git 都会应用那些信息。 当你想针对特定我的项目应用不同的用户名称与邮件地址时,能够在那个我的项目目录下运行没有 --global 选项的命令来配置。 查看配置信息:git config --list 查看某一项配置:git config user.name 获取帮忙获取 config 命令的手册:git help config Git 根底获取 Git 仓库在现有目录中初始化仓库:进入我的项目目录并输出git init 克隆现有的仓库:git clone https://github.com/... 文件状态查看文件状态:git status ...

September 4, 2021 · 6 min · jiezi

关于git:git-常用命令

回退命令 git reset commit_id 对于git reset命令,包含 --mixed,--soft --hard等,其中--mixed为默认形式,他们之间的区别如下 git reset -soft:仅勾销commit,本地仓库回退至指定版本 git reset -mixed(default):勾销commit与add,本地仓库回退至指定版本 git reset -hard :勾销commit与add,并撤回源文件的批改

September 3, 2021 · 1 min · jiezi

关于git:Git-之-版本回退

以前,如果是要去除某一块性能,我都是选择性删除,选择性正文,而后前后逻辑各种查看,各种比拟。每一次,改完这些我总感觉心好累啊!!!而后,我就发现了 Git 一个十分弱小的性能:回滚。当然我还是喜爱叫它:版本回退。 1. git log定义:该命令显示从最近到最远的提交日志。每一次提交都有对应的 commit id 和 commit message。 如果厌弃输入的信息横七竖八,那么加上 --pretty=oneline 参数试试吧! 2. git reset --hard id定义:依据 id 回退到指定的版本; 咱们曾经依据 git log 命令看到了所有的提交的信息,本文中,我以回退到 集体模块批改包引入程序 版本,即 commit id 为 7222c8f6be2d663982faa98dffe2647966b438b1;成果:3. git push origin HEAD --force推送到本地到近程仓库:让近程仓库代码和你本地一样,到以后你本地的版本。这个时候忽然又发现不须要回退了,方才那些隐没的代码又要从新找回来了,别放心,咱们 Git 弱小着呢!4. git reflog定义:查看命令操作的历史 查找到你要的 **_操作id_**,仍旧应用 上文说的 **_git reset --hard id_**。又回退到当初截然不同的版本啰!

September 3, 2021 · 1 min · jiezi

关于git:github-升级小技巧后知后觉

背景github 不反对 rest 的模式,操作仓库, ( 即账户 + 明码,操作, 不行了 ) github 的仓库操作,反对基于 token 认证的操作 ( token-based authentication ) 本文写的是,通过 ssh 操作 github 上的 git repo细节GitHub 反对 ssh 部署的粒度全面, 能够基于用户,对所有的仓库对立部署 能够基于仓库部署 那么一个用户创立了多个组织, 每个组织,只有该用户一个人, 怎么对立部署呢? 笔者暂未钻研有成,本文接着形容,ssh 分仓库部署 解决,就是通过本地的 ssh 配置文件~/.ssh/config 批改配置文件个别咱们的配置文件,长这样 Host * // 通用 AddKeysToAgent yes // 增加密钥 UseKeychain yes // 应用长久化 IdentityFile ~/.ssh/id_ed25519 // 文件门路,默认加密形式命名当初一个 repo, 对应一个 host 增加了,两项配置 Host github1 // 主机 HostName github.com // 服务器名 User git // 用户 AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_a // 一个仓库,一个私钥 Host github2 HostName github.com User git AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_repo2批改本地 git 仓库的近程门路 remote url后果为 ...

September 3, 2021 · 1 min · jiezi

关于git:云效Git教程帮助开发人员更好的运用Git

导读:云效Git教程-帮忙开发人员更好的使用Git,Git 作为分布式版本控制工具,近年来越来越受欢迎,很多公司、开发人员开始应用 Git 来代替 SVN。本片文章重点介绍了对于云效对开发人员应用Git更深层次的技能晋升学习教程帮忙开发人员更好的使用了解GiT的应用。 进阶学习材料 定制你的快捷命令 云效Git教程中有一个小技巧能够使你的 Git 体验更简略、容易、相熟:别名。 如果不想每次都输出残缺的 Git 命令,能够通过 git config 来轻松地为每一个命令设置一个别名。 这里有一些例子你能够试试 $ git config --globalalias.co checkout $ git config --globalalias.br branch $ git config --globalalias.ci "commit -s" $ git config --globalalias.st status这意味着,当要输出 git commit -s 时,只须要输出 git ci。 随着你持续一直地应用 Git,可能也会常常应用其余命令,所以创立别名时不要犹豫。例如,为了解决勾销暂存文件的易用性问题,可向 Git 中增加你本人的勾销暂存别名: $ git config --globalalias.unstage 'reset HEAD --'这会是上面的两个命令等价: $ git unstage fileA $ git reset HEAD -- fileA这样看起来更分明一些。 通常也会增加一个 Last 命令,像这样: $ git config --global alias.last 'log -1 HEAD'这样,能够轻松地看到最初一次提交: ...

September 3, 2021 · 3 min · jiezi

关于git:GitMaster支持Gogs自建git服务了

寂静了许久,GitMaster公布了v1.16.x版本,新增了对于Gogs平台的反对。 如果你日常用到了Gogs,也有在线浏览代码的需要,能够体验下GitMaster,不只是反对Gogs,还反对GitLab,Gitee,Gitea(Gogs的远亲)。 几点阐明: 较低版本的Gogs可能无奈反对,以官网0.12.3及以上为准仅反对懒加载模式(目前api只能反对目录按需加载)必须设置access token,除非站点仓库全副公开(maybe)什么是 GogsGogs是一款极易搭建的自助 Git 服务。 和GitLab相比,Gogs的性能并不弱小,但胜在轻量级的定位上,也易于装置。 易装置您除了能够依据操作系统平台下载 二进制运行,还能够通过 Docker 或 Vagrant,以及 包治理 装置。 跨平台任何 Go 语言 反对的平台都能够运行 Gogs,包含 Windows、Mac、Linux 以及 ARM。 轻量级一个便宜的树莓派的配置足以满足 Gogs 的最低零碎硬件要求。有些用户甚至还将 Gogs 运行在 NAS 设施上。 什么是GitMaster置信很多人晓得Octotree,是一款针对GitHub的浏览器扩大,次要性能是在网页上展现我的项目的树形构造和文件代码。 而GitMaster的外围性能和Octotree是统一,同时也有本人的个性。 反对GitHub、GitLab、Gitee、Gitea、Gogs️ 反对公有部署页面,一键标记 光明模式(仅GitHub、Gist) 告诉揭示性能(仅GitHub)⬇️ 目录、文件独自下载 代码片段(Snippet)复制到哪装置Chrome Web StoreEdge Web StoreFirefox Addon仓库源码欢送来点赞~ https://github.com/ineo6/git-master

September 3, 2021 · 1 min · jiezi

关于git:怎么正确的安装并使用云效-Git控制系统

怎么正确的装置并应用云效Git控制系统Git 是业界风行的分布式版本控制工具,能够无效、高速地解决我的项目的版本治理。在你开始应用 Git 前,须要将它装置在你的计算机上。 一、Git装置形式在 Linux 上装置 最快捷的装置办法,是以二进制包的形式装置 Git。不同的 Linux 发行版有不同的包管理器。例如 RedHat 系应用如下命令装置: $ sudo yum install gitGit官方网站上列出了各种 Unix 发行版的装置步骤 在 Mac 上装置 个别 Mac OSX 自带 Git 。如果你想装置更新的版本,能够应用二进制安装程序。 官网保护的 OSX Git 安装程序能够在 Git 官方网站下载。 在 Windows 上装置 官网版本在 Git 官方网站下载。 要留神这是一个名为 Git for Windows的我的项目(也叫做 msysGit),和 Git 是分别独立的我的项目;能够参考此篇文档进行Git装置。更多信息请拜访http://msysgit.github.io/。 二、Git设置首次运行 Git 前的配置 个别在新的零碎上,咱们都须要先配置下本人的 Git 工作环境。配置工作只需一次,当前降级时还会沿用当初的配置。当然,如果须要,你随时能够用雷同的命令批改已有的配置。 具体内容请参考 Git-scm book,Git权威指南。设置用户名和邮箱(必须设置)在命令行里输出以下命令来增加用户名和 Email ,这个信息将用在后续你的每一次 Git 提交里。 git config --global user.name "Your Name" # 请替换你的用户名git config --global user.email your@email # 请替换你本人的公司邮箱设置用户名和邮箱(必须设置)在命令行里输出以下命令来增加用户名和 Email ,这个信息将用在后续你的每一次 Git 提交里。 ...

September 2, 2021 · 2 min · jiezi

关于git:git基础知识

git commit --amend -m ""谬误提醒error: failed to push some refs to 'https://github.com/xxx/xxx.git'hint: Updates were rejected because the remote contains work that you dohint: not have locally. This is usually caused by another repository pushinghint: to the same ref. You may want to first integrate the remote changes**这是因为近程仓库曾经批改了,所以要先fetch,后pull最初能力push** 提交近程仓库出错src refspec master does not match any提交近程仓库出错,没有add,commit git根本命令Git global cofiggit config --global user.name "John Doegit config --global user.email johndoe@example.comGit initGit add/commit -mGit log:历史记录,最近到最远Git reset –-hard HEAD^ or HEAD~100//回退100Git reset –hard sha号有HEAD指针指向头Git reflog:记录每次命令Work tree  stagereposityGit diff HEAD – 文件名 //查看work tree与repogit diff HEAD -- readme.txt工作区和版本库外面最新版本的区别Git checkout discard work tree的change Git checkout – 文件名Git reset既能够版本回退,也能够把暂存区的扭转撤销掉(unstage)在work tree删除文件,Git rm:从库中删除文件 ,之后要commit,才能够从库中删除 Git checkout – 文件名复原从repositorygit log --graph命令能够看到分支合并图。Git remote add origin(名字)git remote add origin https://github.com/xxx/learngit.gitgit push -u origin master //第一次git push origin mastergit clone近程库master指向最新的提交,再用HEAD指向mastergit checkout -b feature1 //建设分支并转换到分支Git branch 建设分支Git checkout 分支名字,转到分支git branch命令会列出所有分支,以后分支后面会标一个*号git merge dev合并到dev分支 --no-ff参数,示意禁用Fast forwardgit branch -d dev 删除分支git log --graph命令能够看到分支合并图。Git stash listgit stash pop,回到工作现场,discard stashgit remote –v //近程信息git push origin <branch-name>推送本人的批改;如果推送失败,则因为近程分支比你的本地更新,须要先用git pull试图合并;如果git pull提醒no tracking information,则阐明本地分支和近程分支的链接关系没有创立,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。git tag <tagname>用于新建一个标签git show <tagname>查看标签信息:git tag -a <tagname> -m "blablabla..."能够指定标签信息;git tag能够查看所有标签。git tag -d <tagname>能够删除一个本地标签;• 命令git push origin <tagname>能够推送一个本地标签;• 命令git push origin --tags能够推送全副未推送过的本地标签;git push origin :refs/tags/<tagname>能够删除一个近程标签。Git show HEADGit config –list –show-originGit diff work tree和stage的差异Git diff –staged.gitignore能够疏忽不必要的文件Blame:last modification on each line of fileGit push –u 出错,control panel/user/credential managergit 删除commitgit rebase -i HEAD~程序是反向的 ...

September 1, 2021 · 2 min · jiezi

关于git:macOS-ssh-error-unable-to-negotiate-with-IP-no-matching-cipher

环境:macOS Mojava version 10.14在更新了Mac OS当前用ssh push 代码到服务器呈现了上面这个谬误。 ssh error: unable to negotiate with IP: no matching cipher found.Their offer: aes256-cbc,aes192-cbc,aes128-cbc...  Unable to negotiate with XX.X.X.XXX port XX: no matching cipher found. Their offer: aes256-cbc,aes192-cbc,aes128-cbcfatal: Could not read from remote repository.Please make sure you have the correct access rightsand the repository exists.呈现谬误的起因是要连贯的代码仓库服务端的ssh版本过低,客户端与服务端的 cipher 没有匹配上,咱们须要在本人的客户端(降级OS后的Mac)从新启用老的 cipher ,这样就能从新建设起连贯了。 具体步骤如下:第一步:terminal 输出 sudo nano /etc/ssh/ssh_config atcs-air:~ XXX$ sudo nano /etc/ssh/ssh_config第二步:找到 Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,删除这行后面的#号。# Host *# ForwardAgent no# ForwardX11 no# PasswordAuthentication yes# HostbasedAuthentication no# GSSAPIAuthentication no# GSSAPIDelegateCredentials no# BatchMode no# CheckHostIP yes# AddressFamily any# ConnectTimeout 0# StrictHostKeyChecking ask# IdentityFile ~/.ssh/id_rsa# IdentityFile ~/.ssh/id_dsa# IdentityFile ~/.ssh/id_ecdsa# IdentityFile ~/.ssh/id_ed25519# Port 22# Protocol 2 Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc# MACs hmac-md5,hmac-sha1,umac-64@openssh.com# EscapeChar ~# Tunnel no# TunnelDevice any:any# PermitLocalCommand no# VisualHostKey no# ProxyCommand ssh -q -W %h:%p gateway.example.com# RekeyLimit 1G 1hHost * SendEnv LANG LC_*第三步:保留 ssh_config 这个文件,退出。而后就能够和以前一样通过ssh连贯代码仓库服务器了。参考链接:https://www.itechlounge.net/2... ...

September 1, 2021 · 1 min · jiezi

关于git:使用Gitolite搭建Git服务器

Git服务的管理工具,次要有如下几种。 Gitosis- 轻量级, 开源我的项目,应用SSH公钥认证,只能做到库级的权限管制。目前我的项目曾经进行开发,不再保护。Gitolite - 轻量级,开源我的项目,应用SSH公钥认证,能做到分支级的权限管制。Git + Repo + Gerrit - 超级重量级,集版本控制,库治理和代码审核为一身。可治理大型及超大型我的项目。Android平台应用的就是这种计划。GitLab-是GitHub的开源版本,应用和配置比较复杂,适宜大型团队、资源密集型开发的管理工具Gitolite应用perl语言编写,保护和更新比拟踊跃,上面测试应用Gitolite搭建Git服务器。 Gitolite的装置新建用户Git服务器用户gitolite(用于寄存治理Git公钥和仓库)adduser gitolite应用gitolite用户登陆服务器$ su - gitolite明码:确保家目录~/.ssh/authorized_keys是空的或者不存在个别新建用户~/.ssh/目录是不存在的。 客户端生成ssh密钥,并将公钥上传到服务器的Gitolite用户家目录下$ ssh-keygen -t rsa生成门路会在ssh-kengen执行后给出,也可批改。windows下生成门路默认位于C:/user/用户名/.ssh下。 上传客户端的公钥到gitolite用户家目录下$ pscp C:/Users/win7hostsver/.ssh/id_rsa.pub gitolite@192.168.1.18:git1.pub在服务器端下载gitlitegit clone https://github.com/sitaramc/gitolite创立bin目录,并将gitolite装置到bin目录下mkdir -p $HOME/bingitolite/install -to $HOME/bin将上传的公钥git1.pub设置为gitolite的超级管理员$HOME/bin/gitolite setup -pk git1.pub初始化空的 Git 仓库于 /home/gitolite/repositories/gitolite-admin.git/初始化空的 Git 仓库于 /home/gitolite/repositories/testing.git/WARNING: /home/gitolite/.ssh/authorized_keys missing; creating a new one (this is normal on a brand new install)此时,gitolite会初始化两个仓库,同时创立authorized_keys文件 也能够将gitolite命令门路退出到零碎环境变量,这样能够在任何门路应用gitolite客户端克隆受权治理仓库$ git clone gitolite@192.168.1.18:gitolite-admin治理库中有两个目录,conf/和keydir/。 conf/gitolite.conf 用于Git我的项目配置,拜访权限设置。keydir/ 用于存储用户的SSH public key(公钥)。配置Git服务器的我的项目增加新的Git我的项目仓库到本地仓库的创立通过编辑gitolite-admin/conf/gitolite.conf即可,而后将配置后的文件上传服务器。 gitolite.conf中增加如下两行,新建一个repo1的仓库:repo repo1 RW+ = @allgitolite.conf治理仓库有三种权限, RW+、RW、R ...

September 1, 2021 · 2 min · jiezi

关于git:在Git-Bash下设置命令行调用vscode

明天在应用gitbash时,关上文件,每次都是终端和应用鼠标去关上文件两个状态间来回切换。感觉很不不便,要是可能用命令间接关上文件就好了。 上面设置Git Bash中应用vscode命令关上文件。 增加gitbash命令创立gitbash命令文件新建一个文件,以要应用的命令命名,比方vscode(不要有其余后缀)。内容如下:#!/bin/sh"C:\vscode\Code.exe" $1 &C:\vscode\Code.exe是vscode可执行文件的门路 将新建的文件保留到C:\Program Files\Git\mingw64\bin目录下。即Git装置目录下的文件夹内。命令阐明第一行#!/bin/sh,阐明这是个shell脚本第二行,指定所要配置的程序的装置目录,此处为我的电脑上vscode软件所在门路第二行$1是获取vscode命令后的第一个参数,即输出参数第二行&指定命令在后盾关上。这样文件不会在gitbash内关上应用vscode命令间接应用vscode命令加文件名,关上指定的文件。 vscode filename和vim命令一样,存在则关上文件;不存在,则新建一个同名文件,不保留不会创立在所在目录内 拓展应用这个办法能够设置其余你想设置命令,从而实现更多功能 参考:两步实现在Git Bash中用Sublime关上文件

August 31, 2021 · 1 min · jiezi

关于git:搭建Git服务器

备注:本文参考于廖雪峰老师的博客Git教程。按照其博客进行学习和记录,感激其自私分享,也欢送各位查看原文。 知识点apt-get install git装置git,创立用户adduser username新用户家(home)目录下.shh/authorized_keys寄存治理连贯到Git近程仓库的用户的私钥。git init --bare reponame.git创立一个空的近程仓库,并将此近程仓库所在目录及子目录的拥有者设置为新用户,chown -R username:usernameGroup sample.git/批改/etc/passwd文件,禁用用户shell终端登陆。搭建Git服务器Git近程仓库实质上和本地仓库没有任何区别,只是它能提供永恒在线服务 如下演示在Ubuntu上搭建Git服务器 装置git:$ sudo apt-get install git创立一个git用户,用来运行git服务$ sudo adduser git应用passwd git为git用户批改明码。创立证书登陆创立证书登陆,和在应用github或gitee时,将公钥上传到近程服务器上一样,Git服务器须要收集须要登陆的用户端的公钥(用户创立的id_rsa.pub), 收集所有须要登陆的用户的公钥,即用户的id_rsa.pub文件。把公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。 默认新建的git用户家(home)目录,没有.ssh暗藏目录。可手动创立目录和文件。 新建一个用户,其家目录上面默认生成的文件由/etc/skel目录外面的内容决定(可自行验证)。 同时Ubuntu下新建用户,家(home)目录下的桌面等目录须要应用新用户登陆ubuntu桌面后,才会会生成桌面、图片、文档、下载、音乐等目录。 初始化Git仓库:选定一个目录作为Git仓库,假如为/srv/sample.git,在/src目录下输出命令 $ sudo git init --bare sample.git[sudo] git 的明码:初始化空的 Git 仓库于 /srv/sample.git/Git会创立一个空的仓库,且没有工作区,只用于共享,所以不应让用户间接登陆到服务器批改工作区。 服务器Git仓库通常.git结尾。 将目录的所有者改为git。$ sudo chown -R git:git sample.git/禁用git用户shell登陆处于平安思考,新建的git用户不容许登陆shell。通过编辑/etc/passwd文件设置。 关上passwd文件找到如下行: git:x:1001:1002:,,,:/home/git:/bin/bash将其批改为 git:x:1001:1002:,,,:/home/git:/usr/bin/git-shell此时应用git登陆,将会不容许 $ su git明码:fatal: Interactive git shell is not enabled.hint: ~/git-shell-commands should exist and have read and execute access.su命令用来切换登陆用户 sudo用来获取root管理员权限,执行命令 su [username] 切换到指定用户,不扭转环境变量 ...

August 30, 2021 · 1 min · jiezi

关于git:Git别名和配置文件

备注:本文参考于廖雪峰老师的博客Git教程。按照其博客进行学习和记录,感激其自私分享,也欢送各位查看原文。 配置别名如果,如果这么神器的Git版本控制系统,能够简化命令。比方git status,间接用git st代替,几乎爽翻天。 通过为Git命令配置别名,就能实现st示意status,如下: $ git config --global alias.st status此时git st就示意git status 据此能够简化更多命令,比方co示意checkout,ci示意commit,br示意branch: $ git config --global alias.co checkout$ git config --global alias.ci commit$ git config --global alias.br branch这样提交就能用如下简写: $ git ci -m "bala bala bala..."参数--global是全局参数,配置的别名能够在以后计算机下应用。 unstage别名再比方撤销暂存区批改的命令git reset HEAD file是一个unstage操作,则能够unstage别名: $ git config --global alias.unstage 'reset HEAD'git last别名比方配置git last,显示最初一次提交信息: $ git config --global alias.last 'log -1'这样,用git last就能显示最近一次的提交: 甚至还有人丧心病狂地把lg配置成了: git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"git lg的成果能够应用不同色彩标识出log记录,看起来十分炫 ...

August 30, 2021 · 1 min · jiezi

关于git:git的分支远程连接和远程分支的拉取推送及冲突处理

备注:本文参考于廖雪峰老师的博客Git教程。按照其博客进行学习和记录,感激其自私分享,也欢送各位查看原文。 知识点强制删除未合并的分支,git branch -D <branch-name>,将失落分支的批改git remote和git remote -v 显示近程仓库信息git push origin branch-name将本地分支推送到近程。默认clone近程库后,只能看到master分支,其余分支须要设定跟踪,git checkout -b dev origin/devdev分支设置为跟踪来自 origin 的近程分支 dev。git branch --set-upstream-to=origin/<branch> branch创立本地分支与近程分支的跟踪,用于git push和git pullgit pull <remote> <branch>拉取指定的近程分支Feature分支软件开发中,总有无穷无尽的新的性能要一直增加进来。 增加一个新性能时,你必定不心愿因为一些试验性质的代码,把主分支搞乱了,所以,每增加一个新性能,最好新建一个feature分支,在下面开发,实现后,合并,最初,删除该feature分支。 比方你接到了一个新工作:开发代号为Vulcan的新性能,该性能打算用于下一代星际飞船。 于是筹备开发: $ git checkout -b feature-vulcanSwitched to a new branch 'feature-vulcan'5分钟后,开发结束: $ git add vulcan.py$ git status# On branch feature-vulcan# Changes to be committed:# (use "git reset HEAD <file>..." to unstage)## new file: vulcan.py#$ git commit -m "add feature vulcan"[feature-vulcan 756d4af] add feature vulcan 1 file changed, 2 insertions(+) create mode 100644 vulcan.py切回dev,筹备合并: ...

August 29, 2021 · 3 min · jiezi

关于git:GitHub和码云gitee及远程仓库管理

备注:本文参考于廖雪峰老师的博客Git教程。按照其博客进行学习和记录,感激其自私分享,也欢送各位查看原文。 知识点git remote add <name> 近程库地址,增加指定的近程库名git remote rm <name>删除一个近程库git remote -v查看近程库信息GitHubGitHub作为一个收费的近程仓库,能够很不便的公布本人的开源我的项目,同时参加他人的开源我的项目应用GitHU币的克隆和分支性能。在他人的开源我的项目中,点击“Fork”,就能够克隆一个开源我的项目的仓库到本人的仓库,而后应用clone克隆到本地,批改我的项目。而后推送到本人账户下的我的项目中。其余账户下是没有权限推送的。本人批改或减少新性能后。能够在GitHub上发动一个pull request,申请到开源我的项目库。如果对方承受pull request,就真正的奉献到开源我的项目中。码云(gitee.com)码云是国内的Git托管服务网站 码云不仅提供收费的Git仓库,还集成了代码品质检测、我的项目演示等性能。对于团队合作开发,码云还提供了项目管理、代码托管、文档治理的服务,5人以下小团队收费 gitee的应用码云的应用办法和GitHub相似,注册账号并登陆后,须要上传本人的SSH公钥 设置>SSH公钥,输出本地的公钥和title 点击确定,增加key。将本地仓库关联到码云的近程仓库首先,在码云创立一个新的我的项目,我的项目名最初与本地现有我的项目一样 在本地仓库上应用git remote add,和码云近程仓库关联 $ git remote add origin git@gitee.com:findmoon/gitTest.gitfatal: 近程 origin 曾经存在。如上,提醒origin近程库曾经存在,本地库曾经关联了一个名叫origin的近程库,即之前关联的github中的仓库 查看近程库信息,git remote -v,本地库关联了GitHub的近程库$ git remote -vorigin git@github.com:findmoon/newrepo.git (fetch)origin git@github.com:findmoon/newrepo.git (push)删除已有的近程库的连贯$ git remote rm origin此时从新关联gitee码云的近程库$ git remote add origin git@gitee.com:findmoon/gitTest.git查看近程库信息$ git remote -vorigin git@gitee.com:findmoon/gitTest.git (fetch)origin git@gitee.com:findmoon/gitTest.git (push)此时origin曾经关联到gitee码云的近程库。通过git push进行推送。 本地版本库关联多个近程库Git作为分布式版本控制系统,能够同步到多个近程库。 git给近程库的默认名是origin,应用多个近程库时,须要指定不同的名称。 如下,先删除gitTest库的origin近程库,而后增加github和gitee两个近程库 $ git remote rm origin$ git remote$ git remote -v$ git remote add github git@github.com:findmoon/newrepo.git$ git remote add gitee git@gitee.com:findmoon/gitTest.git$ git remotegiteegithub新建了两个近程库,别离指向GitHub和gitee$ git remote -vgitee git@gitee.com:findmoon/gitTest.git (fetch)gitee git@gitee.com:findmoon/gitTest.git (push)github git@github.com:findmoon/newrepo.git (fetch)github git@github.com:findmoon/newrepo.git (push)推送到GitHub$ git push github masterEverything up-to-date推送到gitee$ git push gitee masterEverything up-to-date

August 29, 2021 · 1 min · jiezi

关于git:Git的自定义和特殊文件配置

备注:本文参考于廖雪峰老师的博客Git教程。按照其博客进行学习和记录,感激其自私分享,也欢送各位查看原文。 知识点配置Git显示色彩git config --global color.ui true.gitignore配置疏忽文件,且要提交到版本库git add -f <file>,强制增加file,git check-ignore查看疏忽规定自定义Git在装置Git时,有对Git进行全局配置,用户名和邮箱(user.name和user.email)也能够配置其余选项 配置Git显示色彩$ git config --global color.ui true疏忽非凡文件理论开发中,总有一些非凡文件不能提交。比方保留了数据库明码的配置文件等。 然而这些文件创建后,在git status时会显示Untracked files ...,而且不小心增加上后就会被提交。 .gitignore疏忽文件Git中,能够在Git工作区的根目录下,创立一个.gitignore文件,写上须要疏忽的文件名,Git就会主动疏忽这些文件。 对于不同语言和环境中举荐的疏忽文件的配置,能够查看github我的项目gitignore:https://github.com/github/git... 中示例。 疏忽文件的准则是:疏忽操作系统主动生成的文件,比方缩略图等;疏忽编译生成的两头文件、可执行文件等,也就是如果一个文件是通过另一个文件主动生成的,那主动生成的文件就没必要放进版本库,比方Java编译产生的.class文件;疏忽带有敏感信息的配置文件,比方寄存口令的配置文件。疏忽文件示例比方,疏忽Windows下主动生成的缩略图文件,自定义目录中的Desktop.ini文件,windows主动生成的垃圾文件。 # Windows:Thumbs.dbehthumbs.dbDesktop.ini比方,疏忽Python编译产生的.pyc、.pyo、dist等文件或目录 # Python:*.py[cod]*.so*.egg*.egg-infodistbuild下面的文件,加上自定义的文件,就能够失去一个残缺的gitignore文件 # Windows:Thumbs.dbehthumbs.dbDesktop.ini# Python:*.py[cod]*.so*.egg*.egg-infodistbuild# My configurations:db.inideploy_key_rsa将.gitignore文件提交到Git。测验.gitignore的规范是git status命令是不是说working directory clean 应用Windows的童鞋留神了,如果你在资源管理器里新建一个.gitignore文件,它会十分难以了解地提醒你必须输出文件名,然而在文本编辑器里“保留”或者“另存为”就能够把文件保留为.gitignore。 此限度和问题,曾经在Win10最新版中不存在了。其余版本和更具体的版本号未测试 .gitignore文件查看和强制增加当一个文件被.gitignore疏忽后,便不能增加到git暂存区$ git add App.classThe following paths are ignored by one of your .gitignore files:App.classUse -f if you really want to add them.强制增加疏忽的文件如Git提醒,加上-f参数,能够强制增加文件到Git $ git add -f App.classgit check-ignore命令查看疏忽规定,从而批改规定$ git check-ignore -v App.class.gitignore:3:*.class App.classGit提醒.gitignore的第3行规定疏忽了该文件。 ...

August 28, 2021 · 1 min · jiezi

关于git:git标签管理

备注:本文参考于廖雪峰老师的博客Git教程。按照其博客进行学习和记录,感激其自私分享,也欢送各位查看原文。 知识点git tag <name>新建一个标签,默认示意的是HEAD,以后提交.git tag v0.9 commit_id在指定提交上创立标签git tag -a <tagname> -m "blablabla..."指定标签信息;git tag -s <tagname> -m "blablabla..."用PGP签名标签;命令git tag查看标签列表。git show <name>显示标签信息删除标签git tag -d <tagname>将本地标签推送到近程git push origin <tagname>一次性推送全副标签到近程git push origin --tags删除近程标签git push origin :refs/tags/<tagname>标签标签相似版本库的一个快照。当公布一个版本时,通常先在版本库中打一个标签(tag),用以惟一确定打标签时刻的版本。通过获取某个标签的版本,就能够把过后的历史版本取出来Git的标签实质也是指向某个commit的指针,相似于分支,然而标签不能挪动,分支能够挪动。创立和删除标签都是霎时实现Git标签不便标识。因为本来的commit是一串数字(6a5819e...),然而tag v1.2就很不便查找和标识Git上打标签切换到须要打标签的分支上:$ git checkout master切换到分支 'master'您的分支与上游分支 'origin/master' 统一。创立标签tag$ git tag v1.0查看标签tag历史$ git tagv1.0标签tag默认打在最新提交的commit上。如果忘了打标签,能够查找历史提交的commit_id,在指定commit_id上打标签 指定commit_id上打标签,如下,在提交merged fixed bug上打新标签查看commit_id $ git log --pretty=oneline --abbrev-commitaf1b0b3 add some word on masterfaaaaa6 merged fixed bugafc33ef fixed a bug0df6e43 Merge branch 'dev'在commit_id上打标签,查看tag历史 $ git tag v0.9 faaaaa6$ git tagv0.9v1.0tag标签是按字母程序排序的,应用git show <tagname>查看标签信息$ git show v0.9commit faaaaa6756a8d04c269b7b5ddccfc2a9e67108dbMerge: 0df6e43 afc33efAuthor: findmoon <1286637198@qq.com>Date: Wed Feb 21 22:25:03 2018 +0800 merged fixed bug创立带有阐明的标签,-a指定标签名,-m指定标签阐明$ git tag -a v0.8 -m"version 0.8 released" 7c4d427git show显示标签阐明和信息$ git show v0.8tag v0.8Tagger: findmoon <1286637198@qq.com>Date: Thu Feb 22 10:39:40 2018 +0800version 0.8 releasedcommit 7c4d4271b7bbd7a9898574ff3cfa795f40f9bbe3Merge: 8f69de8 44dffc0Author: findmoon <1286637198@qq.com>Date: Wed Feb 21 14:54:46 2018 +0800 merge with no-ff应用-s参数,用私钥签名一个标签$ git tag -s v0.7 -m"version 0.7 released" afc33efgpg: 钥匙环‘/home/liu/.gnupg/secring.gpg’已建设gpg: 钥匙环‘/home/liu/.gnupg/pubring.gpg’已建设gpg: “findmoon <1286637198@qq.com>”已跳过:私钥不可用gpg: signing failed: 私钥不可用error: gpg 无奈为数据签名error: 无奈签订标签因为签名采纳PGP签名,所以必须首先装置gpg(GnuPG),没有gpg或者gpgp密钥对,就会报错。 ...

August 28, 2021 · 2 min · jiezi

关于git:冲突还在用git-merge吗互联网公司都用git-rebase

git merge 和 git rebase的区别目标都是将一个分支的commit合并到到另外一个分支中去 git merge在gitlab上新建一个我的项目,push一个test文件下来2.在本地批改test文件做两次commit,每次commit都在文件中加一句批改 3.在近程仓库中间接批改文件并commit,模仿其余开发者的commit 4.如果此时我push本地的提交到近程,就会被回绝,因为近程和本地曾经各自有commit了,咱们惯例的做法是git pull一下,在本地解决抵触,而后持续push,实质上git pull = git fetch + git merge 产生抵触: 解决抵触: 从新走add commit 而后push,能够看到必须将合并当作一个新的commit: git rebase如果咱们此时采纳git pull --rebase,也就是=git fetch + git rebase 一样本地commit2次,近程commit2次 应用能够看到git pull --rebase,还是会提醒咱们去解决抵触,然而从git log 上能够看出显著曾经产生了rebase,也就是变基,本地分支基于了近程的最新commit,而不是上次的本地commit 解决抵触,每解决完一次本地commit抵触,用git add标记抵触已解决完,用git rebase --continue持续解决下一个本地commit,也能够先用git rebase -i将本地的commit合并为一个commit,这样git pull --rebase就能一次解决所有的抵触 push到近程之后,在分支图能够显著看到,跟merge的区别在于,rebase不会产生分支,并且也不会产生新的提交

August 28, 2021 · 1 min · jiezi

关于git:git分支间切换注意点和bug分支的处理

git分支间切换留神点和bug分支的解决[toc] 备注:本文参考于廖雪峰老师的博客Git教程。按照其博客进行学习和记录,感激其自私分享,也欢送各位查看原文。 知识点以后一个分支上批改文件或目录后,在没有提交前,任何一个分支的状态(git status)都会同步为一样合并或切换分支工作,肯定是在以后分支提交后,或者应用git stash将以后暂存区状态保留下来之后进行,即以后分支git status显示为洁净的仓库再切换同时批改了同一个工作区雷同文件,因为Git治理版本是通过挪动HEAD指针,工作区的批改对于挪动到不同分支的指针是一样的。此时master和dev分支git add增加到暂存区,git status在不同分支状态是一样的,如果master分支先commit,两头所做的批改,会全副算作master的批改(因为dev没有提交,仅仅add增加了暂存区,两头的批改在切换分支提交后会在dev分支失落,但所有批改都存在于master的提交中)。故:理论开发中肯定要提交或者暂存以后暂存区的状态后,再切换分支进行其余批改,否则在本分支所做批改的状态会失落。git stash对于git没有治理的文件状态不会保留(新创建或批改没有增加过的文件)。git stash list查看stash的列表git stash pop复原stash到以后分支,并删除stashgit stash apply,git stash drop复原stash和删除stashgit stash apply stash@{0}复原指定的stash到以后分支。记一次分支合并问题情况从分支点开始,不同分支批改工作区的内容(不增加到暂存区和提交),切换分支,工作区的内容是一样的。这一点也证实了,Git批改的是HEAD斧正,而不是文件 如下: -git status查看dev分支上Git的状态,洁净工作区切换到mster,查看Git状态,洁净工作区$ git status位于分支 dev无文件要提交,洁净的工作区$ git checkout master切换到分支 'master'您的分支当先 'origin/master' 共 8 个提交。 (应用 "git push" 来公布您的本地提交)$ git status位于分支 master您的分支当先 'origin/master' 共 8 个提交。 (应用 "git push" 来公布您的本地提交)无文件要提交,洁净的工作区master分支下,批改readme文件,查看状态,和切换到dev分支下,常看状态。疏忽近程分支的提醒。$ git status位于分支 master您的分支当先 'origin/master' 共 8 个提交。 (应用 "git push" 来公布您的本地提交)尚未暂存以备提交的变更: (应用 "git add <文件>..." 更新要提交的内容) (应用 "git checkout -- <文件>..." 抛弃工作区的改变) 批改: readme.txt批改尚未退出提交(应用 "git add" 和/或 "git commit -a")$ git checkout devM readme.txt切换到分支 'dev'$ git status位于分支 dev尚未暂存以备提交的变更: (应用 "git add <文件>..." 更新要提交的内容) (应用 "git checkout -- <文件>..." 抛弃工作区的改变) 批改: readme.txt批改尚未退出提交(应用 "git add" 和/或 "git commit -a")必须在提交或者暂存以后暂存区的状态后,再切换或合并分支工作区的批改对于不同分支是一样的: ...

August 27, 2021 · 4 min · jiezi

关于git:git分支管理的策略和冲突问题

备注:本文参考于廖雪峰老师的博客Git教程。按照其博客进行学习和记录,感激其自私分享,也欢送各位查看原文。 知识点git log --graph --pretty=oneline --abbrev-commit查看分支合并状况git log --graph查看分支合并图当两个分支批改同一个文件时,可能产生两个分支不能主动合并的问题,须要手动解决抵触(合并时,Git将抵触标识了进去),而后再次提交,即可实现合并。应用参数--no-ff禁用快合并模式,git merge --no-ff -m"merge with no-ff" dev,合并对于分支中的抵触如下,新建一个分支dev2,并且在新分支上开发: $ git checkout -b dev2切换到一个新分支 'dev2'批改readme.txt,增加一行。 Creating a new branch is quick AND simple.在dev2分支进行提交,$ git add readme.txt$ git commit -m"add new line at readme on dev2"[dev2 4a097db] add new line at readme on dev2 1 file changed, 1 insertion(+)切换到master分支,同时在master上批改readme文件(增加域dev2分支上文件不同的内容,Creating a new branch is quick & simple.),并且提交git checkout master切换到分支 'master'您的分支当先 'origin/master' 共 1 个提交。 (应用 "git push" 来公布您的本地提交)$ git add readme.txt$ git commit -m"add new line at readme on master"[master d562bf7] add new line at readme on master 1 file changed, 1 insertion(+)如上,Git会主动提醒以后master分支比近程origin/master分支当先一个提交 ...

August 27, 2021 · 2 min · jiezi

关于git:git分支管理

备注:本文转载参考于廖雪峰老师的博客Git教程。按照其博客进行学习和记录,感激其自私分享,也欢送各位查看原文。 知识点分支能够并行的治理版本,协同单干编写代码,在分支上实现工作,而后合并分支。查看分支和以后分支:git branch创立分支git branch <name>切换分支git checkout <name>创立并切换分支git checkout -b <name>合并指定分支到以后分支,git merge <name>删除分支git branch -d <name>分支治理分支相似于平行的多个干线。 分支的作用:比方多人合作开发中,你开发的性能须要两周实现,第一周还没写完,如果提交,因为代码不残缺,提交可能会导致他人不能干活,然而如果等代码全副写完再提交,又有失落的危险。 借助分支,你能够创立一个属于本人的分支,多集体各自在本人的分支上失常工作,互不影响,等到开发实现后,在一次性合并到原来的分支上,保障了平安、高效、协同、互补影响。 Git分支的创立、切换、删除十分快,和文件多少无关。 创立与合并分支版本回退中,Git的版本治理是将每次提交串成一条工夫呈现,这条工夫线就是一个分支。 目前创立的Git仓库只有一个分支——主分支,即master分支, HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是以后分支。开始,master 分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定以后分支和以后分支的提交点。 每次提交,master分支都会向前挪动一步,随着一直的提交,master分支的线也越来越长。 当咱们创立新的分支,比方dev分支,Git新建一个指针叫dev,指向master雷同的提交,再把HEAD指向dev,就示意以后分支在dev上。 Git创立分支很快,因为Git只减少一个dev指针,同时批改HEAD的指向,工作区的文件都没有任何变动。 当初对工作区的批改和提交就针对dev分支,比方新提交之后,dev指针往前挪动,而master指针不变 当咱们在dev上的工作实现了,就能够把dev合并到master上。 Git的合并很简略,就是间接把master指向dev的以后提交,这就实现了合并。 Git合并分支也很快,仅仅是改改指针,工作区内容不变。 合并完分之后,如果删除dev分支只有把dev指针删除就能够 只剩下一条master分支 创立分支。创立dev分支,并切换到dev分支$ git checkout -b dev切换到一个新分支 'dev'git checkout -b xx示意创立分支并切换。 分步骤创立并切换分支dev2。如下$ git branch dev2$ git checkout dev2切换到分支 'dev2'git branch查看以后分支$ git branch dev* dev2 mastergit branch列出所有分支,以后分支后面有一个*号。 当初能够在dev2分支上失常提交。如批改readme.txt文件。而后查看Git状态$ git status位于分支 dev2尚未暂存以备提交的变更: (应用 "git add <文件>..." 更新要提交的内容) (应用 "git checkout -- <文件>..." 抛弃工作区的改变) 批改: readme.txt批改尚未退出提交(应用 "git add" 和/或 "git commit -a")提醒以后分支位于dev2上,并且工作区readme.txt批改 ...

August 26, 2021 · 1 min · jiezi

关于git:git远程仓库

备注:本文参考于廖雪峰老师的博客Git教程。按照其博客进行学习和记录,感激其自私分享,也欢送各位查看原文。 知识点ssh-keygen -t rsa -C "youremail@example.com"生成SSh密钥对。私钥保留好,公钥能够增加到Git服务器(如GitHub近程仓库)增加或关联一个近程仓库,git remote add origin git@server-name:path/repo-name.git第一次将本地仓库推送到近程master分支,git push -u origin master本地提交后,将本地最新仓库推送到近程,git push origin master克隆近程仓库,git clone git@server-name:path/repo-name.git近程仓库Git是分布式版本控制系统,同一个Git仓库能够散布到不同机器上。一台机器上的原始版本库,能够被其余机器“克隆”,且每台机器的版本库都一样,没有主次之分。(一台电脑不同目录也可也组成近程仓库) 理论,个别是有一台服务器,每个人从这个服务器仓库克隆一份到本人电脑,并且能够提交本人的代码,或者从服务器仓库拉取他人的提交。 Github就是一个提供近程仓库托管服务的网站,通过github账号,就能够收费取得Git近程仓库。 本地和近程仓库本地Git仓库和近程Github仓库之间的传输是通过SSH加密的 创立SSH Key创立SSH Key时,生成的公钥和私钥默认寄存在用户主目录下,在用户主目录下(windows为c/Users/用户名/,linux为/home/用户目录/)会有一个.ssh目录,并且外面蕴含有id_rsa和id_rsa.pub两个文件。 关上终端(shell,windows下关上Git Bash),创立SSH Key:$ ssh-keygen -t rsa -C "youremail@example.com"设置及明码等,间接回车放弃默认即可,临时不必对key设置明码(除非窃密级别特地高) 此时,在用户主目录下找到.ssh目录,外面有id_rsa(私钥,不能泄露)和id_rsa.pub(公钥),这两个就是SSH Key的机密对。 github近程仓库增加密钥登陆Github,点击头像,抉择setting,关上SSH and GPG keys>SSH keys列表而后点击“New SSH Key”,填上Title,在Key文本框里粘贴公钥id_rsa.pub的内容 点“Add key”,将公钥增加到GithubGitHub反对SSH协定,通过你增加的公钥,就能够确定代码的提交、近程连贯、推送等不会被他人顶替Github容许增加多个Key,这样能够在多台电脑上近程连贯github仓库、提交和推送代码等。Github上托管的Git仓库,目前公开库能够被所有人查看,如果设置为公有库则只能本人查看批改 通过有条件,能够本人搭建Git服务器 增加近程仓库本地曾经存在一个Git仓库,通过将其连贯到近程GitHub仓库,能够实现备份和近程同步(和写作) 登陆GItHub,点击“New repository”,新建一个仓库。填上仓库名、形容、public,点击“create repository”。 当初一个空的GItHub仓库曾经创立实现。如下所示,GitHub疾速装置,有三个向导提醒,能够在命令行创立一个新仓库、或者从本地推送一个已有的仓库、或者导入代码从一个仓库 要把本地已有的仓库推送到近程,依据GitHub提醒,在本地的GitTest仓库目录下运行如下命令$ git remote add origin git@github.com:findmoon/newrepo.git本地仓库曾经和近程仓库关联,实际上能够和任何近程仓库关联,然而如果SSH Key公钥不在GitHub的账户列表中,是无奈推送的。 近程仓库的名字是origin,是Git默认的叫法。 把本地仓库的内容推送到近程仓库$ git push -u origin masterThe authenticity of host 'github.com (...)' can't be established.RSA key fingerprint is ...Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added 'github.com,192.30.255.112' (RSA) to the list of known hosts.对象计数中: 10, 实现.Delta compression using up to 4 threads.压缩对象中: 100% (7/7), 实现.写入对象中: 100% (10/10), 845 bytes | 0 bytes/s, 实现.Total 10 (delta 2), reused 0 (delta 0)remote: Resolving deltas: 100% (2/2), done.To git@github.com:findmoon/newrepo.git * [new branch] master -> master分支 master 设置为跟踪来自 origin 的近程分支 master。git push命令实际上是把以后分支master推送到近程。 ...

August 26, 2021 · 2 min · jiezi

关于git:git回滚到某次提交reset-current-branch-to-here

背景情景1:提交了屡次谬误的提交,想回滚到之前的某次提交。 情景2:合并了谬误的分支,想回滚到合并之前。 解决办法基于git reset current branch to here。 间接在idea下面操作即可。 回滚(git reset current branch to here)当初来模仿,比方提交了四次,当初想回滚到第一次提交,去掉前面三次的提交, 抉择某次提交,右键 抉择hard,回滚到某次提交。 当初本地曾经实现,前面三次提交记录也被删除,看不到了。 强制push(force push) 发现强制push是灰色,强制push不了。 因为有爱护,去掉爱护,就能够了。 再次强制push之后,近程仓库的前面三次提交记录就都被删除了。 gitlab去掉爱护的形式是 参考https://zhuanlan.zhihu.com/p/... https://www.jetbrains.com/hel... 回滚的各种状况的解决办法,基于idea。

August 23, 2021 · 1 min · jiezi

关于git:Git管理修改撤销和删除文件

备注:本文参考于廖雪峰老师的博客Git教程。按照其博客进行学习和记录,感激其自私分享,也欢送各位查看原文。 知识点Git跟踪和治理的的是批改,而不是文件git checkout -- file,会将文件撤销到和git add时的状态一样,即git checkout -- file会将工作区的文件撤销到与暂存区(stage)统一git checkout -- file命令中,如果没有--,就变成了“切换到另一个分支”的命令 git reset HEAD file既能够回退版本,也能够把增加到暂存区的批改回退到工作区,HEAD示意最新版本删除文件,git rm file,git commit -m"..."治理批改Git不同于其余版本控制系统,Git跟踪和治理的的是批改,而不是文件 新增一行、删除一行、批改字符、删除又减少内容、创立新文件等,都是批改 Git通过提交放入暂存区的批改,用来治理批改,而不是治理原文件。 ## 撤销批改 在理论中,(尽管不常产生)总是会呈现产生一些问题须要撤销批改。 比方:在文件中增加一行无意义的特殊字符liu@liu-virtual-machine:~/gitTest$ cat readme.txt`this is a test that I learning and use git version control systemthis is a beginningi Add a new line information in the end of readme.txt file$%^%&^*&&(**)(*)*&^*(*&&*&YTRYYIN没有git add增加到暂存区时的撤销此时,查看git status如下:liu@liu-virtual-machine:~/gitTest$ git status位于分支 master尚未暂存以备提交的变更: (应用 "git add <文件>..." 更新要提交的内容) (应用 "git checkout -- <文件>..." 抛弃工作区的改变) 批改: readme.txt批改尚未退出提交(应用 "git add" 和/或 "git commit -a")Git提醒,git checkout -- file能够抛弃工作区的改变 ...

August 20, 2021 · 2 min · jiezi

关于git:git的工作区和暂存区

git的工作区和暂存区备注:本文参考于廖雪峰老师的博客Git教程。按照其博客进行学习和记录,感激其自私分享,也欢送各位查看原文。 知识点版本控制的内容批改提交的流程是:工作区>暂存区>分支工作区(Working Directory)工作区就是git仓库所在的目录,比方之前新建的gitTest目录就是一个工作区。 版本库(Repository)工作区有一个暗藏目录.git,这个不算工作区,而是Git的版本库 Git的版本库中有很多货色,其中最重要的就是stage(或者叫index)暂存区,和Git主动创立的第一个分支master、曾经指向master的一个指针HEAD 将文件增加到Git版本库中须要执行两步: 1、git add把文件增加进去,实际上是把文件批改增加到暂存区。2、git commit提交更改,实际上是把暂存区的所有内容全副提交到以后分支。创立Git版本库时,Git主动创立了一个惟一的master分支,git commit是往master分支上提交。 git add先把所有变更增加到暂存区(Stage),而后git commit会把暂存区的所有批改提交到以后分支。

August 20, 2021 · 1 min · jiezi

关于git:TortoiseGit-安装与使用对接码云windows

TortoiseGit是一个可视化界面应用的Git工具,与SVN根本大同小异链接:https://pan.baidu.com/s/1D0Ke... 提取码:w6d1 一个是TortoiseGit工具安装包 还有一个是汉化工具先装置TortoiseGit工具安装包 再装置汉化工具 依据本人所需门路 再装置汉化工具 勾选 而后抉择本地门路创立一个文件夹用来放仓库中的我的项目门路不要有中文最好,设置工具 语言选择中文,Git门路抉择本人的门路(前提是下载Git) 全副不要勾选 依据本人门路找到工具bin目录下这个exe,创立秘钥 点击Generate 留神一点鼠标在绿条来回滑动,创立速度会十分快!!!! 将这个Key放到码云中的SSH公钥 关上码云 而后将秘钥放到本地 在文件夹中先创立一个以.ppk为后缀的文件,名称轻易起 创立实现后就会秘钥就会写进文件 点击克隆拉取我的项目 拉取仓库我的项目 拉取胜利!! 在测试一下上传到仓库批改文件提交 master 再点击推送 推送实现 查看仓库是否更新 功败垂成!!!

August 18, 2021 · 1 min · jiezi

关于git:Git-码云-使用流程windows

首先有码云的账号https://gitee.com/ 下载Git链接:https://pan.baidu.com/s/1vZzK... 提取码:pxza 提醒一下:我试过最新版本没有预期那么好,还是用稳固版本的。 下载完后鼠标右键就会有git 先去码云中创立一个仓库 依据本人需要去填写 git地址会随着仓库创立实现 在本地创立一个文件夹进行git操作点击 Git Bash Here 门路一样创立秘钥ssh-keygen -t rsa -C "123@qq.com" 始终回车就行(邮箱能够轻易写) 查看秘钥 将秘钥写到码云下面治理 开始创立name email 初始化gitgit config --global user.name "test" git config --global user.email "123@qq.com" git init 文件夹就会呈现.git 连贯test仓库git remote add origin git@gitee.com:miaomiaolove1/test.git 当初本地和仓库什么货色都没有,咱们能够在本地创立文件而后上传到仓库中。测试一下。 本地新建test.txt文件 上传到缓存git add -A 缓存中标注解释git commit -m "git 测试" 上传到仓库git push origin master 码云中查看方才测试文件 上传实现了。拉取仓库也很简略一个命令 git pull origin master 上传的时候能够加条件 git add -A 是全副文件上传到缓存(有时候只想几个文件上传,所以依据本人需要加条件) ...

August 18, 2021 · 1 min · jiezi

关于git:CentOS安装git

下载git安装包sudo wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.17.1.tar.gz 解压安装包到指定文件夹sudo tar xzvf git-2.17.1.tar.gz -C /usr/local 装置Curlyum install curl-devel 配置装置门路sudo ./configure prefix=/usr/local/git-2.17.1/ 进入到git文件编译make && make install 更改配置vim /etc/profile 最初一行export PATH=$PATH:/usr/local/git-2.17.1/bin 执行命令source /etc/profile 查看git版本

August 18, 2021 · 1 min · jiezi

关于git:使用-git-tag-给项目打标签

随着开发的深刻,一些开发的标准也在缓缓落实。对我的项目的每个版本打上标签就是其中很重要的一项。本文用来记录打标签的一些惯例操作。 应用命令行提醒应用命令行提醒查看 tag 相干命令行: $ git tag -h创立标签通过 git tag <tagname> 创立一个标签: $ git tag v1.0.0v1.0.0默认标签是打在最新提交的commit上的。如果想给历史commit 打上标签,只需在前面加上 commit id 即可。 $ git tag v1.0.8 ba9f9e上传标签git push 并不会将 tag 推送到近程仓库服务器上,在创立完 tag 后咱们须要手动推送 tag。推送单个 tag: $ git push origin v1.0.8总共 0(差别 0),复用 0(差别 0),包复用 0To github.com:hellomrbigshot/react-m-editor.git * [new tag] v1.0.8 -> v1.0.8一次推送所有本地 tag: $ git push origin --tags总共 0(差别 0),复用 0(差别 0),包复用 0To github.com:hellomrbigshot/react-m-editor.git * [new tag] v1.0.6 -> v1.0.6 * [new tag] v1.0.7 -> v1.0.7 * [new tag] v1.0.8 -> v1.0.8查看标签列表通过 git tag 查看所有标签 ...

August 16, 2021 · 2 min · jiezi

关于git:git基本使用

备注:本文参考于廖雪峰老师的博客Git教程。按照其博客进行学习和记录,感激其自私分享,也欢送各位查看原文。 知识点:1、git init 初始化git仓库 2、git add 增加文件或改变 3、git commit -m"改变的阐明" 提交所有的增加 装置git在ubuntu终端下,输出gitliu@liu-virtual-machine:~$ git程序“git”尚未装置。 您能够应用以下命令装置:sudo apt install git装置gitsudo apt install git设置用户名和邮箱装置好Git后,设定去全局用户名和邮箱,如下 git config --global user.email "you@example.com" git config --global user.name "Your Name"全局配置示意,这台机器上所有的Git仓库都应用这个配置,也能够对某个仓库独自指定配置 创立版本库版本库又叫仓库,repository,能够简略了解为一个目录,外面的文件都可被Git治理起来,包含每个文件的批改、删除,Git都能够跟踪,不便随时跟踪历史,或者“还原” 创立一个版本库,在一个目录下通过git init将其变成git治理的仓库能够新建一个空目录,或在一个旧有目录都能够。 提醒初始化空的Git仓库于......,一个Git仓库曾经创立实现 创立实现后,当前目录下会多出一个.git的暗藏目录,通过ls -al查看详细信息,这个目录是Git用来跟踪治理版本库的,失常状况不要批改,否则会毁坏Git仓库把文本文件增加到版本库版本零碎介绍所有的版本控制系统,包含Git,其实只能跟踪文本文件的改变,比方txt文件、网页、所有的程序代码等等。版本控制系统能够通知你每次的改变,比方某一行增加了一个单词,或者删除了一行等,然而图片视频等二进制文件的变动是没法跟踪的,只能记录改变的大小和改变工夫等,然而改变的内容却不晓得。(注:微软的Word格局也是二进制格局) 尽量不要应用Windows自带的记事本编辑任何文本文件。起因是记事本保留的每个文件结尾都增加了0xefbbbf(十六进制)的字符,这也是用来申明文件编码格局的,相似于图片、视频二进制文件的编码申明,但这却会带来大问题。比方,网页第一行可能会显示一个“?”,明明正确的程序一编译就报语法错误,等等,都是因为文件结尾退出的字符带来的。这种结尾的0xefbbbf(十六进制)的字符也被成为Bom,能够下载其余文本编辑器,比方visual studio code、sublime等,如应用Notepad++时,能够将Notepad++的默认编码设置为UTF-8 without BOM即可: 增加并提交文件到仓库在Git仓库下创立一个readme.txt文件this is a test that I learning use git version control sysytemIt is a beginning应用git add把文件增加到仓库git add readme.txt增加胜利。没有任何显示就对了,Unix的哲学是“没有音讯就是好消息” 应用git commit把文件提交到仓库。如果没有设置全局的用户名和邮箱,此时会提醒进行设置能力提交 liu@liu-virtual-machine:~/gitTest$ git commit -m"add a readme file"[master (根提交) 3033dda] add a readme file 1 file changed, 3 insertions(+) create mode 100644 readme.txtgit commit -m,-m前面输出本次提交的阐明,用于阐明本次更改的内容 ...

August 16, 2021 · 1 min · jiezi

关于git:git的撤销删除和版本回退

备注:本文参考于廖雪峰的博客Git教程。按照其博客进行学习和记录,感激其自私分享,也欢送各位查看原文。 知识点:1、git status,查看git仓库的状态 2、git diff 查看git批改了的内容 3、HEAD指向的版本就是以后版本,应用git reset --hard commit_id命令能够回到指定版本 4、通过git log查看提交历史和git reflog查看命令历史,确定回退或复原到某一版本。 查看git仓库的状态咱们批改一下readme文件的内容,增加一行内容。 运行git status查看状态liu@liu-virtual-machine:~/gitTest$ git status位于分支 master尚未暂存以备提交的变更: (应用 "git add <文件>..." 更新要提交的内容) (应用 "git checkout -- <文件>..." 抛弃工作区的改变) 批改: readme.txt批改尚未退出提交(应用 "git add" 和/或 "git commit -a")git status命令能够查看仓库以后的状态,下面显示,readme.txt文件被批改过,但还没有退出提交批改的内容。 git diff能够查看批改了什么内容,这样就能够分明的晓得上次批改的内容是什么,如下liu@liu-virtual-machine:~/gitTest$ git diffdiff --git a/readme.txt b/readme.txtindex 90269eb..7d0ff65 100644--- a/readme.txt+++ b/readme.txt@@ -1,4 +1,4 @@ `this is a test that I learning and use git version control system this is a beginning-wofaidognyixie dognxi+i Add a new line information in the end of readme.txt file在批改最初一行之前我增加和提交了一行wofaidognyixie dognxi,当初批改为i Add a new line information in the end of readme.txt file,相当于删除增加。git diff查看不同的内容,结果显示出批改前后的比照。 ...

August 15, 2021 · 2 min · jiezi

关于git:Github新安全措施停止Git客户端账号密码登录的解决方案

往年 8 月 13 日之后,如果你还用账户明码来操作 Github 上的仓库,就会收到如下正告: remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.fatal: unable to access 'https://github.com/<user>/<repo>/': The requested URL returned error: 403解决方案就是应用拜访令牌(AccessToken)。如果Git 客户端提醒你须要登录 Github,账户输出oauth2,明码输出你的令牌。 如果你曾经用账户明码登录过了。在推送的时候,不会提醒你登录,而是间接报错。这种状况就须要关上~/.git-credentials文件,这个是Git客户端贮存账号密码的中央。找到@github.com,把后面的用户名明码替换成oauth2:<token>,即功败垂成。 留神,如果你的用户名明码在你仓库的近程 URL 外面,同样须要用git remote set-url来替换掉。 其实所有 Git 服务端都能够这样操作,这样反对权限隔离和细粒度管制,防止一码通明码,更加平安。

August 14, 2021 · 1 min · jiezi

关于git:将github上的开源项目移动到gitee码云上

1.复制原来github中的仓库地址 2.在gitee码云中点击从GitHub/GitLab导入仓库 3.在gitee中粘贴刚刚复制都github仓库地址后点击导入 如果原来曾经增加过,要先删除git remote remove gitee 执行下面三步当前增加一下git remote add gitee 码云仓库地址 最初推送git push -u gitee master

August 13, 2021 · 1 min · jiezi

关于git:git-实用小技巧

让本地分支和近程分支截然不同 git fetch --allgit reset --hard origin/master (这里master要批改为对应的分支名)git pullgit近程分支笼罩本地分支

August 12, 2021 · 1 min · jiezi

关于git:gitee整理的时候错点了这个结果代码不能推送

gitee,邮箱治理,错点选中了,禁止命令行推送裸露集体邮箱 后果代码推送不到git库

August 12, 2021 · 1 min · jiezi

关于git:Git-代码分支管理-Git-Flow-策略

简介在团队合作开发中,版本管理工具尤为重要,它能够帮忙团队很好地进行代码的共享、回滚等操作,比拟风行的版本管理工具有:CVS、SVN、Git。Git作为分布式版本管理工具,劣势非常显著,它能够为每位团队成员本地提供一套残缺的代码库,这使得开发者能够在无网的状况下将代码提交至本地仓库,缩小了对核心服务器的依赖。随着Git的遍及,为了更高效地进行团队合作开发,人们通过经验总结钻研出了几套实用于各种团队和我的项目的分支管理策略,Git Flow 就是其中之一,它对版本控制更为严格,次要适宜开发团队规模较大、开发周期较长,可达几周至几个月的我的项目。接下来,间接展现最终实战计划,如果开发团队和我的项目类型适宜,可间接拿来应用。 Git Flow 工作流图 Git Flow 工作流阐明总体标准倡议:对立以版本号命名,各分支以版本号对应,比方,feature/v1.0 、release/v1.0、tag/v1.0 1. 主分支 Master 稳固版本代码分支,不能在此分支间接批改代码, 只承受 hotfix、release 分支的代码合并,每次从 release/hotfix 分支合并必须打版本号 tag,以不便后续的代码追溯。 2.主开发分支 Develop 每个feature迭代从 develop 拉取分支,该分支只承受 hotfix、release 分支的代码合并,该分支禁止间接合并到 master。 3.新性能分支 Feature 新性能迭代开发分支,开发人员开发实现后合并生成预公布分支 release/xxx(与 feature 分支一一对应),此分支禁止测试、禁止公布上线、禁止间接合并到 develop、禁止间接合并到 master。 4.预公布分支 Release feature 分支由开发自测实现后合并到 develop 分支,测试人员再从 develop 分支新建对应的 release 分支。测试部进行集成测试、开发部批改 bug、产品验收。测试通过后(公布上线前)将此分支合并到 develop 和 master 分支,而后可将 release 迭代和对应的 feature 迭代分支删除。 5.热修复分支 HotFix 该分支基于 master 分支创立,用于批改线上发现的紧急 bug, bug 修复实现并测试通过后须要合并回 master 和 develop 分支。 总结以上是实在我的项目中的 Git 版本管理策略,其通过了实战的考验,能够拿来即用,咱们能够看到上述策略较为繁琐,须要同时保护 master 和 develop 两个次要分支,因而,Git Flow 策略只适宜团队规模较大,我的项目开发周期较长的我的项目,这个周期能够是几周至几个月,而古代的开发模式中,为更快更好地满足客户的需要,往往采纳麻利迭代的开发方式。接下来,我将更新一篇适宜麻利治理团队的版本管理策略,供大家参考。 ...

August 11, 2021 · 1 min · jiezi

关于git:Git基础及Simple-Gitflow

Git相干简介Git 是一个收费的开源分布式版本控制系统,旨在疾速高效地解决从小到大的所有我的项目。 装置Mac 装置homebrew,间接将上面命令复制到命令行运行 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"通过homebrew装置git brew install gitWindows 下载git可执行文件地址:https://gitforwindows.org/ 装置实现之后在开始菜单里找到"Git"->"Git Bash",会弹出 Git 命令窗口,你能够在该窗口进行 Git 操作。 配置信息配置集体用户名及邮件地址 git config --global user.name "username"git config --global user.email user@gmail.com常用命令形容信息命令创立git仓库git init从远端仓库克隆一份代码git clone将文件增加到缓存区git add提交缓存区的内容git commit查看以后仓库状态及变动文件git status回退版本git reset查看历史提交记录git log拉取远端代码git pull将代码推送至远端git push创立分支git branch branchname切换分支git checkout branchname合并分支git mergeSimple Gitflow相干信息上面为日常工作中应用到的开发流程,非标准Gitflow流程,若想查看规范Gitflow流程详见原文:https://nvie.com/posts/a-succ... 下图为日常工作中应用到的gitflow流程 分支相干内容master外围分支(仅做代码备份),和develop同时创立,只承受merge操作 develop外围开发分支,feature分支从develop创立,仅反对merge操作 feature日常开发分支,从develop分支创立日常业务迭代,bug批改等 hotfix线上bug修复,从master分支创立,实现测试公布后别离merge到develop分支和master分支 bugfix从release分支创立测试实现测试后merge到release分支 日常开发流程1、release/1.0版本分为feature/1和feature/2两个公布内容 2、在f/1和f/2开发过程中产生的bug间接在feature分支批改后打包给测试 3、集成测试阶段release/1.0分支从develop分支创立,集成包测试期间遇到bug从release/1.0分支创立bugfix/a分支待测试结束后merge回release/1.0分支 4、需要上线后将release/1.0代码merge到develop和master分支,从develop分支创立release/1.0的标签 5、在需要上线后产生线上bug时从master分支创立hotfix/1.0分支批改,待代码测试上线后merge回develop和master分支

August 4, 2021 · 1 min · jiezi

关于git:当工作遇到GIT看这篇就够了

前言嗨喽,大家好,我是CrazyCodes, 明天咱们联合日常碰到的工作场景来解说GIT,文末附有精美流程图,须要请自取。 历史从古至今,无论学个什么货色,都要先得聊聊其发源地。 Git 是一个开源的分布式版本控制系统,是Linux之父Linus为了帮忙治理Linux内核开发而开发的一个开放源码的版本控制软件。GitHub 基于Git开发的软件我的项目托管平台。GitLab 也是基于Git开发的软件我的项目托管平台,但其是开源的。基本知识git clone && git init本地初始化一个Git仓库与从近程拉取到本地一个Git仓库,实质上没有区别,在近程拉取仓库也须要先在近程建设仓库,其命令仍旧是git init git目录切换分支.git/HEAD 用于记录以后所在分支,应用 git checkout branchName 是间接批改该文件 ref: refs/heads/master某个分支的以后提交.git/refs/heads e6caa5bbcd4d362d3a5bac6b5a3417c15991484c相似的查看某个标签的以后提交 .git/refs/tags e6caa5bbcd4d362d3a5bac6b5a3417c15991484c暂存区git add filename 该动作内容保留在 .git/index 文件中 日志.git/logs 保留所有日志 ,应用 git log 会查问该文件 常用命令git addgit commitgit mergegit checkoutgit diffgit statusgit log学习平台https://learngitbranching.js.... 利用场景git blame 找出“真凶”git blame filenamegit checkout 回滚文件git checkout filenamegit add 如何勾销git reset HEAD filenamegit commit 如何勾销git reset --soft HEAD~1// 从新批改commit信息git commit --amendgit merge 如何勾销git merge --abort不要自觉应用git add .git status// 在将文件增加到缓存区之前,请肯定、肯定、肯定先git diff 下git diff// 查看所有批改都是想add的,如果所有批改都是的话,能够应用 git add . 除此之外还请谨慎呀!git add . || git add filename1 filename2git rebase 变基 ==“换爹”?git rebase branchgit cherry-pick 不留余地的“偷代码”git cherry-pick hashcommit|branchname加塞工作如何解决git stashgit stash apply|popgit list致谢最初,根据上述形容的工作中常常遇到的场景,画的一张流程图。 ...

August 3, 2021 · 1 min · jiezi

关于git:husky-commitlint-配置无效gitignore配置无效问题

其实就是每次新加这些功能模块的时候都会不起作用,起因就是本地缓存起的作用,把新加性能上传后,删除本地仓库,从新从远端拉取即可

August 2, 2021 · 1 min · jiezi

关于git:Git版本管理工具的最佳学习路径

Git是一个分布式版本控制软件,本文介绍了该工具的典型学习门路,并列数了必须要非常理解的要害命令。独立根本应用作为版本管理工具仅为了保留订正历史,在不思考与其他人合作与多版本保护时,你须要相熟以下命令。 git initgit clone <repository>git statusgit add <file>git add --allgit commitgit remote addgit remote set-urlgit remote -vgit push <repository> <branch>git pull <repository> <branch>要害的配置当你应用的越来越多时你会发现有些操作很繁琐,这时候你须要学习一些要害配置,使你本人的差别诉求失去满足。 git log git checkout <file>git reset <file> git reset --hard git clean -f git rm <file> git config --global user.namegit config --global user.emailgit stashgit stash applygit stash clear 多人合作应用当你须要与其他人独特保护一个我的项目时,你须要把握相应的分支检出、分支创立、分支合并、查看订正历史等性能。 git mergegit branchgit checkout <branch>git checkout -bgit blame <file>git rebasegit push --force-with-lease (DANGEROUS)版本管理员如果你从事我的项目的版本管理工作,那么你须要理解更业余的一些操作,包含更具体的查看分支、比拟分支、复原版本、更改订正、修复版本问题等。 git commit --amendgit rebase -igit prunegit fetchgit remote prunegit checkout HEAD/HEAD~1/<commit hash>git diff <commit hash 1> <commit hash 2>git revert <commit hash>git refloggit-filter-branchgit-filter-repogit bisect版权申明,本文首发于 数字魔盒 https://www.dm2box.com/ 欢送转载。

August 1, 2021 · 1 min · jiezi

关于git:将idea中存在的本地项目直接添加至gitee

将idea中存在的本地我的项目间接增加至gitee

July 31, 2021 · 1 min · jiezi

关于git:IDEA用git-pull出现DSStore

降级新版idea后,用Git pull时呈现报错: Your local changes will be overwritten by merge.Commit, stash, or revert them to proceed.解决方案:在IDEA terminal中间接运行如下命令将其删除 find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatchIDEA提醒:rm '.DS_Store',此时,咱们再pull曾经胜利了。

July 30, 2021 · 1 min · jiezi

关于git:3分钟带你了解版本控制系统的发展历史

3分钟带你理解版本控制系统的倒退历史对于版本控制什么是“版本控制”?我为什么要关怀它呢? 版本控制是一种记录一个或若干文件内容变动,以便未来查阅特定版本订正状况的零碎。在CODE CHINA 中,咱们对保留着软件源代码的文件作版本控制,但实际上,你能够对任何类型的文件进行版本控制。 如果你是位图形或网页设计师,可能会须要保留某一幅图片或页面布局文件的所有订正版本(这或者是你十分渴望领有的性能),采纳版本控制系统(VCS)是个理智的抉择。 有了它你就能够将选定的文件回溯到之前的状态,甚至将整个我的项目都回退到过来某个工夫点的状态,你能够比拟文件的变动细节,查出最初是谁批改了哪个中央,从而找出导致怪异问题呈现的起因,又是谁在何时报告了某个性能缺点等等。 应用版本控制系统通常还意味着,就算你乱来一气把整个我的项目中的文件改的改删的删,你也照样能够轻松复原到原先的样子。 但额定减少的工作量却微不足道。 接下来,咱们将要回顾版本控制系统的倒退历史。 版本控制系统倒退能够分为 本地版本控制系统、集中式版本控制系统以及分布式版本控制系统三个阶段。 本地版本控制系统许多人习惯用复制整个我的项目目录的形式来保留不同的版本,或者还会改名加上备份工夫以示区别。 这么做惟一的益处就是简略,然而特地容易犯错。 有时候会混同所在的工作目录,一不小心会写错文件或者笼罩意想外的文件。 为了解决这个问题,人们很久以前就开发了许多种本地版本控制系统,大多都是采纳某种简略的数据库来记录文件的历次更新差别。 其中最风行的一种叫做 RCS,现今许多计算机系统上都还看失去它的踪影。 RCS 的工作原理是在硬盘上保留补丁集(补丁是指文件订正前后的变动);通过利用所有的补丁,能够从新计算出各个版本的文件内容。 集中化的版本控制系统接下来人们又遇到一个问题,如何让在不同零碎上的开发者协同工作? 于是,集中化的版本控制系统(Centralized Version Control Systems,简称 CVCS)应运而生。 这类零碎,诸如 CVS、Subversion 以及 Perforce 等,都有一个繁多的集中管理的服务器,保留所有文件的订正版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的规范做法。 这种做法带来了许多益处,特地是相较于老式的本地 VCS 来说。 当初,每个人都能够在肯定水平上看到我的项目中的其他人正在做些什么。 而管理员也能够轻松掌控每个开发者的权限,并且治理一个 CVCS 要远比在各个客户端上保护本地数据库来得轻松容易。 但这么做也有一个不言而喻的毛病,那就是是地方服务器的单点故障。 如果宕机一小时,那么在这一小时内,谁都无奈提交更新,也就无奈协同工作如果核心数据库所在的磁盘产生损坏,又没有做失当备份,毫无疑问你将失落所有数据——包含我的项目的整个变更历史,只剩下人们在各自机器上保留的独自快照。本地版本控制系统也存在相似问题,只有整个我的项目的历史记录被保留在繁多地位,就有失落所有历史更新记录的危险。 分布式版本控制系统于是分布式版本控制系统(Distributed Version Control System,简称 DVCS)面世了。 在这类零碎中,像 Git、Mercurial、Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照, 而是把代码仓库残缺地镜像下来,包含残缺的历史记录。 这么一来,任何一处协同工作用的服务器产生故障,预先都能够用任何一个镜像进去的本地仓库复原。 因为每一次的克隆操作,实际上都是一次对代码仓库的残缺备份 不仅如此,许多这类零碎都能够指定和若干不同的远端代码仓库进行交互。这样一来,你就能够在同一个我的项目中,别离和不同工作小组的人相互协作。 你能够依据须要设定不同的合作流程,比方层次模型式的工作流,而这在以前的集中式零碎中是无奈实现的。 Git 的诞生接下来,让咱们来看一看 Git 诞生的故事。 Git 诞生的背景同生存中的许多平凡事物一样,Git 诞生于一个极富纷争大举翻新的年代。 Linus 在1991年创立了开源的 Linux,从此,Linux 零碎一直倒退,曾经成为最大的服务器系统软件了。在1991-2002年期间,世界各地的志愿者把源代码文件通过 diff 的形式发给 Linus,而后由 Linus 自己通过手工形式合并代码。 ...

July 29, 2021 · 1 min · jiezi

关于git:git-reset-和-git-revert

问题场景:git push谬误提交时撤销此次谬误提交 1.git reset:原理:批改head指针地位,将head指针指向之前的某个版本,指标版本 应用办法:git log 查看版本号,或者gitlab上查看版本号git reset --hard 指标版本号(此时本地head指针以指向之前的版本)git push -f 提交更改(如果用git push 会报错,因为此时本地代码落后于近程仓库代码,所以用git push -f强推上去) 2.git revert:原理:git revert次要用于‘反做’某一个版本,罕用场景为两次先有后提交‘版本2’和‘版本3’,然而‘版本2’中因为代码问题须要撤销提交,版本3中的提交又要保留。 应用办法:git log查看版本号git revert -n 版本号(此版本号为须要摘除的版本号)呈现抵触解决抵触。git add . (有抵触时)git commit -mgit pushrevert其余相干:1.回滚某次提交 git revert commitId 2.回滚屡次提交 git revert old-commitId^..new-commitId 如果咱们想把这三个revert不主动生成三个新的commit,而是用一个commit实现,能够这样: git revert -n old-commitId^..new-commitId

July 27, 2021 · 1 min · jiezi

关于git:git-rebase和merge的基本常用操作

背景应用GIT很久始终都没有深层次的钻研过,个别状况下,只有会用add,pull,commit,push等几个根本提交命令就能够了,对于分支合并大部分应用merge操作,我用了好几年的merge,忽然公司说须要用rebase进行合并,过后一脸懵逼。然而心里也不慌,连忙上网找了些材料,然而理论利用呈现各种各样的状况。而后用上rebase后,真香。 git日常操作$ git clone https://gitee.com/iwenz81/yp-...。// 拷贝我的项目$ cd yp-loan-good $ touch file1 file2 file3. // 增加文件$ git add . // 增加文件$ git commit -m '在我的项目一中初始化三个代码文件' // commit$ git push -u origin master。 // 推送 merge日常操作git branch //查看以后分支以及近程分支git checkout master //切换到mastergit pull origin master // 拉去最新近程我的项目git merge dev // 合并dev分支到master rebase日常操作:性能 / 修复性能开发已实现后,必须要把多个 commit 点合成一个 commit,再 rebase master,具体操作:多个commit合成一个:git rebase -i <commit id 开发的起始点>或者git rebase -i head~2<head~2:把以后最近的两次commit合成一个>更新最新master分支基点:git pull —rebase origin master发生冲突必须先解决抵触,不能未解决抵触就强推。每个小点都是一个残缺的需要rebase操作如下:https://app.yinxiang.com/fx/7...

July 26, 2021 · 1 min · jiezi

关于git:GitIDEA-Git-Reset-选项说明

IDEA Git Reset 选项阐明

July 26, 2021 · 1 min · jiezi

关于git:GitIDEA-git分支回退指定的历史版本

IDEA git分支回退指定的历史版本

July 26, 2021 · 1 min · jiezi

关于git:GitGIT使用rebase和merge的正确姿势

GIT应用rebase和merge的正确姿态

July 26, 2021 · 1 min · jiezi

关于git:GitIDEAGit使用过程中git-push-rejected解决

idea+git应用过程中git push rejected解决

July 26, 2021 · 1 min · jiezi

关于git:工作中的-git-详解

概述始终想写一下 git 的笔记, 只是都没有工夫去做, 只能闲暇的时候缓缓的补齐了;毫无疑问, git 是目前最优良的分布式版本控制工具, 没有之一; 作为一个码农, git 曾经是一项必备的技能了, 许多优良的社区都是基于 git 去做的版本控制; 比方寰球最大的程序猿同性交友网站 github ; git 有很多种应用形式, 咱们能够应用 git bash 这种命令行模式, 也能够应用 TortoiseGit 或者是 SourceTree 这样的 GUI 工具, 这些 GUI 工具也能提供多种性能; 而集体还是比拟偏向于命令行的形式, 第一个是逼格比拟高, 第二个是大多数的 GUI 软件都只实现了 git 所有性能的一个子集以升高操作难度; 命令行的模式下能力执行所有的 git 命令, 尽管大多数是开发中用不到的; 装置和配置git 的装置也是比较简单的, git 下载官网 找到和操作系统绝对应的版本, 一路 next 就能够了; 装置完之后, 快捷菜单外面会呈现 Git GUI Here 和 Git Bash Here; 咱们能够关上 Git Bash, 在命令行界面外面输出: $ git --version git version 2.18.0.windows.1能呈现 git 的版本号, 就示意咱们的 git 曾经装置胜利; 咱们前面所有的操作都是基于 Git Bash 来进行的; ...

July 24, 2021 · 10 min · jiezi

关于git:git学习总结1

本篇文章次要总结常见分支操作的git命令。 操作分支之前,须要弄清楚git操作的区域。1.工作区编辑代码的区域。2.暂存区位于暗藏文件.git/index,相当于缓存。3.版本库(本地分支)位于暗藏文件.git, 其中commit记录 在 .git/master 文件中。 在本人分支写完代码之后,应用命令 git add .将代码增加到暂存区,接着应用命令 git commit -m 'feat(scope): new function' 将代码增加到版本库。 提交时,留神标准,参考https://segmentfault.com/a/11...这里还有须要留神的:切换到其余分支的之前须要commit,否则在该分支批改的内容不会保留,到再次切回去的时候还是原来的内容。起因:切换分支的时候是去查看版本库中的内容,没有commit的话内容无奈更新到版本库中。将代码提交到近程分支: git push origin remote_name将近程分支代码拉去到本地并且合并: git pull或者 git fetchgit rebase -i HEAD~n第一次去做git学习网站题目时,尽管能通关,然而很多内容都是只知其一;不知其二的。参加理论我的项目开发之后,再去做一遍,有醍醐灌顶的感觉。比方外面C1,C2代表的是本人某次提交记录,bugFix代表的是分支名,通过分支名去绝对援用某一次提交记录,通过哈希值去相对援用某一次提交记录....

July 21, 2021 · 1 min · jiezi

关于git:git常用功能备忘

git罕用性能备忘将本地仓库和远端仓库连贯尽管咱们平时都是在仓库里创立完我的项目后拉取到本地,然而也不排除某些状况下咱们先在本地创立了我的项目,而后须要和远端的某个仓库建立联系。步骤如下: 在本地初始化git仓库git initgit remote add origin <近程仓库地址>git push -u origin master

July 20, 2021 · 1 min · jiezi

关于git:Git-error-failed-to-push-some-refs-to

问题形容git本地推送,呈现谬误error 问题剖析分支名不对应 次要起因是 「Back lives matter」GitHub将master分支变为main 而我推送的是 master分支,显然不对 问题解决只须要将master改为 main即可 注: 然而具体仓库具体须要设置 remote origin 猜测: 对于ssh在GitHub的本地的作用 1、如果设置ssh 设置GitHub和本地设施的ssh无明码平安传输是 保障本地和远端的稳固,短暂的传输 。所以只有设置ssh,本地和GitHub随时能够pull,push。 所以能够间接clone的GitHub的仓库到本地,间接设置了remote origin,能够间接推送 2、如果没有设置ssh 能够克隆远端我的项目,然而推送须要GitHub账号密码 每次pull,push须要账号密码 相干文章 Git 常见谬误 之 error: src refspec xxx does not match any / error: failed to push some refs to 简略解决办法

July 18, 2021 · 1 min · jiezi

关于git:git切换分支不合并当前分支的修改git-stash

在工作过程中,咱们不时会遇到这类问题。在以后分支正在进行性能的开发,忽然来了一个bug,要切换到其余分支批改。然而以后分支的改变还不适宜提交。所以咱们能够应用如下办法进行当前工作区的缓存: 在切换分支前咱们能够应用git stash #将存储批改git stash#切换分支去解决git checkout master批改完之后,回到开发分支,执行 #切换回开发分支git checkout dev#查看贮存列表git stash list有两个复原的办法 办法一: #apply复原后手动drop革除stash$ git stash apply$ git stash drop #多个stash时,复原指定stash需加上id, 如$ git stash apply stash@{0}办法二: #复原最近一次stash到栈中的内容到工作区,复原后删除此stashgit stash pop #同理 有多个存储时git stash pop stash@{0}

July 16, 2021 · 1 min · jiezi