Git配置以及常见操作
前言
不知道是不是一种洁癖,我比较喜欢隔三差五的重装系统。每次重装系统带来的问题就是git的相关配置都得重新配置。于是写一篇文章来记录一下配置git的全过程,以及在工作中经常使用的命令。本文中涉及到的操作均在archlinux里面,其他系统操作大致相同。如果有喜欢踩坑的朋友也可以访问如下链接安装〔archwsl〕(https:github。comyuk7ArchWSL)。后续准备开一篇如何在windows下配置wsl(windowssublinux)的使用(maybe)
另外本文不涉及git的原理的相关内容,关于这块的大家可以直接搜索相关文章,大把大把的文章会告诉你git是如何工作的git的基础配置
每一个工具使用前都需要根据个人使用习惯,进行工具的基础配置,这里列举了一些基础配置。在命令行一次输入如下命令,即可完成配置,配置文件创建在。giticonfig。配置用户名gitconfigglobaluser。name你的英文名配置邮箱gitconfigglobaluser。email你的邮箱配置git的默认行为,默认是Matching,此行为会push所有分支,simple只会push当前分支gitconfigglobalpush。defaultsimple解决提交文件名如果是中文名会出现乱码的问题gitconfigglobalcore。quotepathfalse配置commit的时候以哪种编辑器打开填写commit信息,这里配置的是vscodegitconfigglobalcore。editorcodewait配置alias
配置别名(alias)简单来说就是配置一个更简短的命令来代替git命令。例如可以将gitstatus命名为gst,当键入gst就代表gitstatus。以下命令写入。bashrc文件。使用zsh的还需在。zshrc里面添加以下命令。保存后source修改的文件aliasgagitaddaliasgstgitstatusaliasgcgitcommitaliasgpgitpushaliasgcogitcheckout配置远程仓库
以下配置以github为例,其他仓库可查看对应的配置文档进行配置。配置远程仓库之前先检查系统根目录下有没有生成。ssh目录文件。如果没有请使用命令进行创建。linux系统提示没有sshkeygen命令的话自行google查看如何下载opensshwindows在gitbash里面运行即可sshkeygented25519Cyouremailexample。com复制内容到SSHKeys里面进行配置cat。sshided25519。pub最最最基础的命令1。gitadd
将工作区的文件添加到暂存区添加所有的修改的内容gitadd。添加指定的内容gitaddfile1file22。gitrm
有添加到暂存区的操作那必定有可反悔的命令。gitrm可以将添加到暂存区的返回到工作区gitrmcached将内容返回到工作区
gitrmf则是将文件直接删除掉了
想查看所有的gitrm的使用命令:gitrmhelp返回工作区gitrm1。txtcached删除gitrm1。txtr3。gitstatus
此命令用于查看当前状态。另外也会给出操作提示,总之经常gitstatus是个不错的操作。(就像使用vim的时候经常按jk一样doge)gitstatus4。gitcommit
将暂存区的内容提交到仓库,并且填写提交的说明m后面直接接上提交信息gitcommitmcommitmessagev会打开默认的编辑器进行填写提交信息gitcommitvamend会覆盖上一次的提交(使用场景:一般在两次两次提交想合并成最后一个提交的信息)gitcommitmcommitmessageamendgit常用操作命令
上面讲到了git使用中最常见的命令,分别是gitstatus,gitcommit,gitadd,下面介绍一下在工作过程中其他常用的命令1。gitbranch
分支命令,包括分支的查看,删除,新增等操作gitbranch查看分支gitbranchdbranchname删除分支gitbranchbranchname添加分支gitbranchmbranchnewname修改当前分支名称查看分支可以查看本地的以及远程仓库的,查看远程仓库的使用r,查看所有的使用agitbranchrgitbrancha创建分支gitbranchnewBranch创建并切换到该分支gitcheckoutbnewBranch修改当前分支名称,你需要先切换到当前分支,然后进行修改gitbranchmotherBranchName删除分支,删除分支可能会提示你当前分支的代码还没有merge,如果仍需要删除,使用DgitbranchDnewBranch2。gitmerge
有了多分支,那么随之而来的就会有分支合并,gitmerge有三种模式:noff禁止快速合并,会产生一个新的提交squash不会产生一个新的提交fastforward快速合并
使用场景:从dev分支切出分支feature1,当feature1开发完成需要合并回dev分支的时候个人更喜欢使用noffgitcheckoutdevgitmergefeature1noff3。gitrebase
rebase英文的意思是变基,重垒
和merge功能类似,都可以进行两个分支的内容合并,与merge相比,rebase会使得提交的信息更加整洁
使用场景1:从dev分支切出分支feature1开发新的功能,当需要从feature1分支去获取dev分支更新的最新内容时,可以使用rebasegitcheckoutfeature1gitrebasedev
使用场景2:当需要整合多次提交成为一个提交的时候。比如在开发过程中可能提交了多次细小的提交,看起来不够直观,于是你可以把这些提交都合并成一个提交通过gitlog查看想合并提交的Id使用i,那么从目标Id到当前的提交就会合并成一个提交gitrebase4e81571i别问我这两者有啥子区别,如果硬要说区别,那么也可列举几点:
1。merge会生成非线性分支树,rebase生成线性的分支树
2。merge之后提交按照时间顺序,rebase(gitrebasemain)使得被rebase的分支的提交都会出现在当前分支的前面
3。rebase其实并没有进行合并操作,只是提取了当前分支的修改,将其复制在了目标分支的最新提交后面4。gitpullgitpushgitremote
这两个命令用于与远程仓库的交互。push提交代码到远程仓库,pull从远程仓库拉取代码。常见的操作如下:提交分支代码到远程仓库gitpushoriginbranchName从远程分支拉取代码gitpulloriginbranchName查看远程仓库链接gitremotev删除远程仓库链接gitremotermoriginName添加远程仓库地址(可添加多个仓库地址)gitremoteaddoriginName
使用场景:
leader让你拉一个开源框架到公司的私有仓库里作为基础框架使用,并且能根据开源框架的版本迭代,做到私有仓库的框架版本迭代。
使用的命令有gitclonegitremote克隆开源仓库到本地gitclonegitgithub。com:vinoMambagitDemo。git添加私有仓库的关联gitremoteaddorigingitgithub。com:vinoMambaafterdelete。git
执行上面的代码你会看到报错。报错内容很明显,因为名称重复了,你可以做两种操作:1。删除原本的关联,添加新的关联gitremotermorigingitremoteaddorigingitgithub。com:vinoMambaafterdelete。git2。或者再添加一个新的关联,避免明明冲突gitremoteaddoriginvinogitgithub。com:vinoMambaafterdelete。git查看关联gitremotev
我一般的操作是第二种,这么做是方便当需要更新私有仓库的代码的时候,可以直接拉取代码进行合并。当然第一种操作也是可以的,后期升级的话需要再把开源仓库的关联添加上去,进去代码的拉去合并。添加开源仓库的关联gitremoteaddoriginremotegitgithub。com:vinoMambagitDemo。git从远程仓库主分支拉取代码(注意orginremote是你添加开源仓库关联的名称)gitpulloriginremotemain4。gitfetchgitpull
使用场景:
当拉取代码出现代码冲突的时候,如何解决冲突并合并代码
使用的命令有:gitpullgitfetchgitmergegitlog
说到gitpull和gitfetch。在面试的时候我经常会问一下两者之间有什么区别,说实话如果不是为了准备面试,我也不清楚,后来通过查看相关文章和实践才了解。在我的使用场景中,我一般都是gitpull直接拉取合并。然后再解决冲突。不同于gitpull,gitfetch拉取的代码没有合并到本地代码中,这给了你查看远程代码和本地代码区别的机会,更加清楚明了。gitfetchoriginmain
gitfetch拉取代码之后,会返回仓库代码的最新状态。通过查看log可以看到更新的内容p很好理解,可以理解为指针pointgitlogpFETCHHEADgitmergenoffFETCHHEADgitstatus
当出现冲突的时候。通过搜索来定位冲突。等号上面的是本地代码。等号下面的时候拉取的代码,跟进实际情况进行处理即可。当然像vscodejetbrains这些现代化编辑器都有智能的提示,操作起来更简单。当冲突解决完毕之后,执行提交命令即可完成代码的合并。其他操作1。gitstash
可以理解为通灵术,就是说把当前工作区的内容推送到一个栈里面,当做完支线任务的时候在把栈里面的内容放回工作区。
涉及到的命令有:gitstash把当前工作区更改的内容推送到栈gitstashlist查看栈gitstashpop弹出栈2。gittag
用于打版本号,这个一般在发布版本的时候会进行操作
涉及的命令有:查看所有标签gittag创建标签gittagtagName在指定的节点创建标签gittagtagName34e56b填写标签的详细信息gittagatagNamevtagmessage推送标签到远程gitpushorigintagName
以上是我在工作过程中使用到的git操作,后续如果我升华了有更深理解了,我再来更新此文章
完。
山隐设计新作800具有五星级酒店的品质的古镇民宿客栈方案碛(音qi)口古镇,位于山西吕梁山西麓。古时,黄河下游凶险,上游来往的船只,往往在碛口停泊转旱路。凭借黄河水运碛口一跃成为北方商贸重镇,享有九曲黄河第一镇之美誉,亦是晋商发祥地之一
下周一这三个板块或将迎来涨停潮一锂矿板块。周五锂矿板块王者归来,板块涨幅位居板块涨幅榜首。最近电池级碳酸锂又涨了,每吨突破了55万元,创造了历史新高,这也对锂矿板块构成持续利好。大盘上一次触底2863点后,锂矿
犹太人赚钱智慧(高风险高回报)塔木德中写道在别人不敢去的地方,才能找到最美的钻石。这句话用于投资最为合适,意思就是高风险意味着高回报,风险和收益永远是成正比的。犹太人知道,要想在理财过程中获得尽可能多的收益,就
2022年各项补贴正在陆续发放,取暖价格社保补贴,你领了吗?11月财经新势力不知不觉间,2022年已经到了最后一个季度,各项补贴也都陆续发放完成。不过在2022年年底,还有三笔补贴正在发放。包括取暖补贴价格补贴和社保补贴。那么这三笔补贴,都
中国股神赵老哥,8年时间10万炒股成10亿身家!看懂就不再亏损做交易,难在看懂,停在情绪,断在行动,懒在依赖,快在独立,乱在拉人,盈在跟对,苦在单干,巧在借力,亏在自私,错在指责,胜在检讨,差在不改,累在盲目,贵在付出,赔在自大,输在少学,败
解锁经开产业密码一排排机械臂各司其职一辆辆无人搬运车来回穿梭一项项专利落户经开区这座先进制造业聚集的智能工厂到底有多少龙头力量快跟随经开君的镜头揭开这层神秘面纱陕西汽车控股集团有限公司是陕西装备制
中远海控等待戈多,在不确定性中的确定性本身美线运价延续颓势,4000,3000,2000,甚至现在的1500以下,一个个跳动的数字就像账户里不断缩水的余额一般着实触目惊心。运价的底在哪,什么时候能企稳止跌回升?供应链物流什
面馆的吸金逻辑,仅用了一年就失效了?仅仅用了一年的时间,资本就吃腻了粉面。去年的今天,大家可能不会想到,粉面赛道上所谓的资本狂欢不过是昙花一现,绚烂登场又迅速落幕。资本蜂拥而至又潮水般退去后,彼时疫情下的新风口成为今
北京新增本土感染者33例其中社会面筛查人员1例11月7日0时至15时,新增本土新冠肺炎病毒感染者33例,其中,隔离观察人员32例社会面筛查人员1例朝阳区17例,东城区5例,通州区昌平区各3例,石景山区2例,西城区海淀区密云区各
狗爱啃骨头,但并非所有骨头都安全!哪种类型的骨头狗能吃?狗为什么要啃骨头呢有些人说是为了给狗补钙。有些人说狗就该吃骨头,天性如此。没错,这两条都能站住脚!但对于养在家里的宠物狗来说,这两点并不是重要的原因。补钙嘛吃狗粮已经有足够的钙了。
侯勇一婚娶初恋,二婚潘雨辰,三婚娶小20岁粉丝,如今生活怎样前言侯勇是知名的老戏骨,他靠主演冲出亚马逊而一举成名。随后又先后出演了声震长空大染坊无愧苍生开创盛世铁色高原陈赓大将沙场点兵沧海英雄真情年代等电视剧,还主演了我是特种兵经典系列电视