首页 > 其他分享 >git 使用教程

git 使用教程

时间:2024-11-13 22:58:05浏览次数:1  
标签:教程 git -- dev master 使用 分支

本文为 Git教程 - 廖雪峰的官方网站 (liaoxuefeng.com) 的学习笔记,仅供学习参考之用。

git 是一个版本管理工具,对于个人开发而言,一方面可以记录每次代码的更改,方便回溯代码定位问题;另一方面可以同时开发多个分支,可以更为安全的去折腾新功能。而对于团队开发而言,可以提升协同工作的效率,每个人基于一个共同的代码去开发各自的功能,然后逐步合并到主干分支,如果借助像 github、gitee 这样的网站,合并时代码可以 review,使得代码更加可靠,问题刚方便追溯。

安装

安装完成之后进行配置:

git config --global user.name "Your Name"
git config --global user.email "[email protected]"

git config 加了 --global 参数表示全局使用该项配置。

git 工作流程

在讲解 git 的基本使用之前,需要了解一下 git 的工作流程。

在本地文件中,我们创建好一个 git 仓库之后,会有两个区域的概念,分别是工作区和暂存区。你直接在文件中进行添加、修改、删除,只会直接影响工作区。当你使用 add 命令之后,会把文件添加到暂存区,这时这些文件被 git 记录,但还没有形成新的版本。等你这次代码修改结束了,需要将代码迭代至下一个版本时,使用 commit 命令进行提交,这样就在 .git 文件夹中生成了一个新的版本。

你可以使用 git log 来查看提交记录,对应的就是每一个提交的版本。如果你需要将版本提交至远程(github、gitee、gitlab),需要使用 push 命令。

过了一段时间,如果别人对这个代码做了新的迭代,你想要将这些变动同步到你的本地仓库,然后做进一步开发。那么你需要使用 pull 命令。但这时可能会产生代码冲突,因为你本地做了一些额外的修改,那么你需要根据实际情况去解冲突,然后才能继续开发。但一般只有你自己写这个代码时,不会发生冲突。

再假设一种情况,假如你现在对一个 file 文件做了某些更改,你想将它恢复原状,也就是还原。那么你需要根据不同的情况使用不同的命令:

  • 如果你想将 file 恢复至暂存区的样子(你之前 add 了,但还没有 commit 的那部分),那么你需要用 git checkout -- file
  • 如果你想将 file 恢复至上一个版本(即上一个 commit 时的摸样),那么你需要使用 git reset HEAD file,其中 HEAD 特指上一个版本。注意,这样做会也恢复暂存区中的 file 文件。

以上就是 git 的基本工作流程

基本使用

  • 使用 git init 在一个文件夹内部创建 git 管理。目录下生成 .git 目录,该目录是隐藏的,可以使用 ls -ah 来查看。

  • 使用 git add <file> 来添加文件,并使用git commit -m '' 来提交文件,其中单引号为本次提交添加注释。其中,如果要添加所有文件,可以使用 git add -A 或者 git add .

  • 使用 git status 来查看当前仓库的状态。可以看到哪些文件被 git 管理、哪些未被管理。另外还可以看到哪些文件做了添加、修改或者删除操作。

  • 使用 git diff 来查看修改文件的具体内容(相对于上一次 commit)。

  • 使用 git log 来查看提交日志,加上参数 --pretty=oneline 可以简洁化显示。

  • 使用git reset --hard HEAD^ 回退到上一个版本,回退到往上一百个版本需要改成 HEAD-100。如需指定版本,使用 git reset --hard xxxxx,xxxxx为版本号(可以只写部分前缀)。

  • 使用 git reflog 来查看命令历史。

  • git checkout -- file 可以丢弃文件 file 在工作区的修改,如果暂存区有该文件,则回到暂存区的版本,如果暂存区没有,就回到和版本库一样的版本。

  • 如果要将暂存区的版本也撤销掉,使用 git reset HEAD file ,这样暂存区的内容回退到了工作区。

  • git rm file 用来删除一个文件(工作区和暂存区都删除),如果删错了,也可以使用上面的 checkout 命令回退。如果是只删除暂存区,则使用 git rm --cached file

远程仓库

第一步需要在本地创建 SSH key 。一般存放在用户主目录的 .ssh 文件中,如果存在了 id_rsaid_rsa.pub 文件,则可以跳过这一步。

ssh-keygen -t rsa -C "[email protected]"

然后将生成的 id_rsa.pub 文件里面的内容粘贴到远程仓库的里面(个人设置的公钥设置)

这样远程仓库就可以识别你的本地推送了。

然后在远程创建好 git 仓库,复制好 ssh 地址,类似于: [email protected]:michaelliao/learngit.git

在本地git 仓库文件夹下运行:

git remote add origin [email protected]:michaelliao/learngit.git

表示将该地址添加到名字为 origin 的remote 中。

然后使用 git push -u origin master ,将本地的master分支内容推送到远程新的master 分支,-u 参数是将本地的 master 分支与远程关联起来,方便以后操作。再之后的推送可以使用 git push origin master

关于本地仓库的远程库地址设置,可以使用 git remote -v 查看,如果需要修改,可以使用 git remote rm <name> 删除后重新添加。

git clone <address> 可以从远处克隆 git 仓库,GitHub给出的地址不止一个,实际上,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https

分支管理

使用命令 git checkout -b dev 创建一个 dev 分支,并切换到该分支。这是一个组合命令,实际上执行了:git branch devgit checkout dev

使用 git branch 来查看所有分支以及当前所在的分支。

假设当前分支在 master,使用 git merge dev 可以合并 master 和 dev 分支。当合并方式是 Fast-forward 时,合并速度会非常快。

使用 git branch -d dev 可以删除 dev 分支。

因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。

在最新版本的 git 中,支持使用 git switch -c dev 来创建并切换到新的分支。使用 git switch dev 来切换分支。

当git 无法自动合并分支时,就必须先解决冲突。解决冲突后,再提交,合并完成。用git log --graph命令可以看到分支合并图。

如果要禁用 fast-forwad ,可以使用命令 git merge --no-ff -m "merge with no-ff" dev 来合并,这次合并将创建一个新的结点。

git-no-ff-mode

处理 bug

如果当前在 dev 分支上开发,然后正式版本中出了 bug 急需修复,但当前开发的内容还不能commit 到 dev 分支,那么可以先使用 git stash 来把工作现场储藏起来,等以后恢复现场继续工作。

git switch master
git switch -c issue-101
...
git add .
git commit -m 'fix'
git switch master
git merge --no-ff -m 'fix' issue-101

修好bug之后,切换到 git switch dev 继续开发。使用 git stash list 查看工作现场列表。

使用 git stash apply 来恢复,但内容并没有删除,还需要使用 git stash drop 来删除。

另一种是使用 git stash pop 来恢复,并删除。(跟栈 pop 类似)

使用 git stash list 查看之后,可以使用 git stash apply stash@{0} 来指定恢复。

更方便的是,使用 git cherry-pick <commit_id> 可以复制一个特定的提交到当前分支。作用是如果在 master 做了修复 bug 的改动,那么在 dev 分支上也需要做。

标签:教程,git,--,dev,master,使用,分支
From: https://www.cnblogs.com/1625--H/p/18545012

相关文章

  • Stable Diffusion教程|SD WebUI必备插件教程 菜鸟轻松成高手第二期Free U插件
    今天要给大家介绍一款进阶插件——FreeU。这个插件是一个很有意思的插件,可以为生成出来的图片在底噪上进行调整从而展现出完全不同的风格,以下是具体的使用教程。在教程开始前要事先申明,本教程的使用是建立在使用算网云平台SDWebuiforge镜像的基础上,如果使用秋叶安装包则不......
  • Termux建立Git服务器-Gitea
    在安卓手机上使用Termux搭建自己的Git服务器的步骤,具体如下:Termux安装与配置获取存储权限:打开软件后输入termux-setup-storage获取手机存储权限。安装ssh和git:执行pkginstallopensshgit-y安装,然后输入sshd开启服务。电脑ssh连接termux:手机上通过ifconfig查看ip,通过whoam......
  • 使用clion远程调试
    一、前言openGauss数据库默认在linux系的操作系统上编译和运行,要想可视化调试运行,要么换linux系的桌面系统、要么在命令行使用gdb进行调试。而我习惯使用windows办公,所以非常想通过clion远程调试功能来实现在windows上的openGauss开发与调试。对比gdb,可以在调试的时候直接查看或......
  • 【AI换脸整合包及教程】Rope:AI 换脸工具的功能、原理、应用
    在人工智能技术迅猛发展的当下,AI换脸技术无疑是近年来备受瞩目的焦点之一。其中,Rope作为一款开源的AI换脸工具,因其出色的易用性和强大的功能而广受青睐。本文将对Rope的功能、技术原理、应用场景以及所面临的法律和伦理问题进行详细阐述。一、Rope的主要功能Rope是......
  • 深度学习 PyTorch 中的 logits 和交叉熵损失函数
    在深度学习中,理解损失函数是训练模型的关键一步。在分类任务中,交叉熵损失函数是最常用的损失函数之一。本文将详细解释PyTorch中的logits、交叉熵损失函数的工作原理,并展示如何调整张量的形状以确保计算正确的损失。什么是logits?logits是模型输出的未归一化预测值,通常......
  • “腾讯会议”100人内使用不限时的小技巧
    通过企业微信的方式登录即可。具体步骤如下:第一步:注册企业微信或者加入已有的企业微信组织架构;第二步:进入【腾讯会议】,选择“企业微信”方式登录;第三步:确定当前登录后,此账号可以使用不限时会议的功能。......
  • CICD05 Jenkins流水线, 代码质量检查sonarqube ubuntu使用
    3.2.3.5Pipeline简单案例#范例:脚本式node{stage('Getcode'){echo'获取代码'//gitclone}stage('Build'){echo'构建项目代码'}stage('Test'){echo'......
  • CICD03 Jenkins对golang项目构建, 结合ansible, 构建通知, 自动化构建(定时,webhook),
    2.7.2基于Maven风格的任务构建基于WAR包运行Tomcat服务器JAVA项目maven配置繁琐,功能固定不灵活,不如自由风格好用,这里推荐用自由风格脚本实现更好目前最高依赖到tomcat9,更高版本的tomcat不支持2.7.2.2安装tomcat服务器和配置#在gitlab新建java项目(此项目使用JD......
  • 【Python教程】python如何把数据导出生成excel
    博主介绍:✌全网粉丝21W+,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。感兴趣的可以先......
  • CICD04 Jenkins容器化CICD实现及分布式构建, 流水线Pipeline ubuntu使用
    2.14.3案例:基于Docker插件实现自由风格任务实现Docker镜像制作不如前面的直接脚本编写灵活2.14.3.2安装插件docker-build-stepjenkins上安装docker-build-step插件#选择jenkins使用的docker服务#左侧系统管理,右侧系统配置,DockerBuilder下DockerURL输入un......