首页 > 其他分享 >git学习整理

git学习整理

时间:2024-05-29 22:00:21浏览次数:28  
标签:origin git 学习 master 整理 推送 远程 分支

创建版本库

版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

初始化一个Git仓库,使用git init命令。

添加文件到Git仓库,分两步:

  1. 使用命令git add 文件名,注意,可反复多次使用,添加多个文件,此时文件放到了缓存区;
  2. 使用命令git commit -m "提交信息",完成,此时文件从缓存区被放到了head指定的当前分支中。

查看工作区状态与提交修改

要随时掌握工作区的状态,使用git status命令。

如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

提交修改与添加文件的步骤一样

 git add 文件名
 git commit -m "add a line"

将暂存区的版本提交到版本库,从而形成工作区->暂存区->版本库的基本链路,本地工作区的版本控制流程大致如此.

版本切换

HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id(commit_id可以输入前几位就行)。

穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

多次修改

第一次修改 -> git add -> 第二次修改 -> git add -> git commit

修改撤销

  • 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
  • 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景1,第二步按场景1操作。
  • 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本切换一节,不过前提是没有推送到远程库。

删除文件

如果在本地删除了文件,可以通过以下操作在git库里删除

git rm test.txt

git commit -m "remove test.txt"

可以通过以下操作恢复,相当于是让工作目录test.txt恢复到暂存区中test.txt的状态

git checkout -- test.txt

添加远程库

git连接GitHub的操作可以见《Windows环境基于GitHub和Hexo搭建个人博客》的2.2节

把本地库的内容推送到远程,用git push命令,实际上是把指定分支推送到远程。

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

  1. 要关联一个远程库,使用命令

    git remote add origin git@server-name:path/repo-name.git
    

    例如:

    git remote add origin git@github.com:michaelliao/learngit.git
    
  2. 关联后,使用命令git push -u origin master第一次推送master分支的所有内容;

  3. 此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

克隆远程库

Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。以下是拉去默认分支的内容

$ git clone git@github.com:michaelliao/gitskills.git

因为刚才推送到master分支,所以我们可以拉取master分支的内容

git clone git@github.com:michaelliao/gitskills.git -b master

分支

命令

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>或者git switch <name>

创建+切换分支:git checkout -b <name>或者git switch -c <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。具体的git merge --no-ff -m "merge with no-ff" dev,加上--no-ff选项。

分支管理

master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

所以,团队合作的分支看起来就像这样:

bug分支

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场;

在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick 命令,把bug提交的修改“复制”到当前分支,避免重复劳动。

具体可以参考:https://www.liaoxuefeng.com/wiki/896043488029600/900388704535136

feature分支

开发一个新feature,最好新建一个分支,开发完可以合并到dev分支;

如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除。

多人协作

多人协作的工作模式通常是这样:

  • 首先,可以试图用git push origin 推送自己的修改;
  • 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  • 如果合并有冲突,则解决冲突,并在本地提交;
  • 没有冲突或者解决掉冲突后,再用git push origin 推送就能成功!
  • 如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin/。

多人协作重点:

  • 查看远程库信息,使用git remote -v;
  • 本地新建的分支如果不推送到远程,对其他人就是不可见的;
  • 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
  • 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
  • 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
  • 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

标签

命令git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;

命令git tag -a -m "blablabla..."可以指定标签信息;

命令git tag可以查看所有标签。

命令git push origin 可以推送一个本地标签;

命令git push origin --tags可以推送全部未推送过的本地标签;

命令git tag -d 可以删除一个本地标签;

命令git push origin :refs/tags/可以删除一个远程标签。

使用github

在GitHub上,可以任意Fork开源仓库,复制到自己的仓库;

自己拥有Fork后的仓库的读写权限;

可以推送pull request给官方仓库来贡献代码。

参考

Git教程 - 廖雪峰的官方网站 (liaoxuefeng.com)

标签:origin,git,学习,master,整理,推送,远程,分支
From: https://www.cnblogs.com/fattree/p/18221194

相关文章

  • 源代码管理工具Github
    GitHub简介GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,故名GitHub。GitHub于2008年4月10日正式上线,除了git代码仓库托管及基本的Web管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(......
  • 矩阵树定理学习笔记
    矩阵树定理学习笔记真的,我这辈子都没有想过行列式还能用到这种地方。定义图的关联矩阵对于一张有\(n\)个点、\(m\)条边的图(对于无向图,可以随便定义边的方向,因为相反的边只需要将对应列乘以\(-1\)即可),我们定义其关联矩阵\(M\)满足:\[M_{i,j}=\left\{\begin{matrix}1&e_j......
  • pwn常用工具快捷键学习
    vim普通模式G(普通模式)来的文本最下方g+g(普通模式下)回到文本的开头f+目标单词的首字母(find普通模式)移动到目标单词d(delete)删除当前行u(undo)撤销文本模式I从当前行开头进行输入A当前行文末输入idaF7单步执行,遇到call......
  • 04-Excel基础操作-学习笔记
    制作下拉列表应用场景:限制B列数据,只能输入现金、转账、支票具体操作:选中B列——数据选项卡——数据工具——数据验证——弹出界面如下图所示——点击设置——在允许栏下拉选择序列——在来源栏中填入依次“填入现金、转账、支票”,并用英文状态的逗号隔开——点击确定操作......
  • 开山之作!Python数据与算法分析手册,登顶GitHub!
    若把编写代码比作行军打仗,那么要想称霸沙场,不能仅靠手中的利刃,还需深谙兵法。Python是一把利刃,数据结构与算法则是兵法。只有熟读兵法,才能使利刃所向披靡。只有洞彻数据结构与算法,才能真正精通Python今天给小伙伴们分享的这份手册,是用Python描述数据结构与算法的开山之作,透彻......
  • 锦城学院ACM学习地图
    一、引言团队介绍比赛介绍XCPCICPCICPC(英文:InternationalCollegiateProgrammingContest,中文:国际大学生程序设计竞赛)由ICPC基金会(英文:ICPCFoundation)举办,是最具影响力的大学生计算机竞赛。由于以前ACM赞助这个竞赛,也有很多人习惯叫它ACM竞赛官网网址:https://icpc......
  • 【Mac】关于Mac的github配置和本地项目上传
    目录前言什么是github?有什么用?github个人账户创建Mac的git环境配置生成密钥将密钥添加到github创建github仓库将本地文件上传至github仓库一些常用的git命令总结前言  本文主要介绍了Mac的git环境配置,github仓库的创建,本地文件上传到github仓库以及常用的git命......
  • 表格的常用样式学习
    表格的常用样式:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>表格的常用样式</title......
  • 深度学习手撕代码题
    目录:目录PyTorch实现注意力机制、多头注意力与自注意力Numpy广播机制实现矩阵间L2距离的计算Conv2D卷积的Python和C++实现Numpy实现bbox_iou的计算Numpy实现FocallossPython实现nms、softnmsPython实现BN批量归一化PyTorch卷积与BatchNorm的融合分割网络损失函数......
  • 20240529学习
    https://www.cnblogs.com/sunshine-cat/p/8081974.htmltraceroutetraceroute:IP路由过程中对数据包TTL(TimetoLive,存活时间)进行处理。当路由器收到一个IP包时,会修改IP包的TTL(及由此造成的头部检验和checksum变化)。每收到一个包,检查这个的TTL是否是0。如果是,表明这个包还没有......