git 入门教程

2023-05-16

  1. 想要将一个项目托管到github,需要进入项目所在文件夹进行git init命令初始化。
  2. Git提交代码的基本流程:
  • 创建或修改 本地文件
  • 使用 git add 命令,将创建或修改的文件添加到本地的
  • 暂存区,这里保存的是你的临时更改
  • 使用 git commit 命令,提交文件到 本地仓库
  • 使用 git push命令,将本地代码库同步到 远端仓库
  1. git add
    使用 git add + 文件名/目录名命令,git add .(可以将所有文件上传)可以将你需要同步的文件,添加到本地的暂存区。
  2. git commit
    git commit 提交是你工作的一个里程碑 —— 每当你完成一些工作,都可以创建一次提交,保存当前的版本。
    这样一来,无论你何时修改了文件,都创建一个新版本的文件,你可以很方便地查看以往所有版本的文件和内容。
    在提交之前,你必须先设置你的名字和 email,这是你在提交 commit 时的签名,每次提交记录里都会包含这些信息。
    使用 git config 命令进行配置:
$ git config --global user.name "YourName"
$ git config --global user.email "YourEmail@xxx.com"
  git commit -m "first commit"
  git commit --amend --no-edit #忘记在上一次提交加入File了,因此,使用该命令可以在将文件加入到上次提交。

commit 的语法结构是 git commit -m “注释” ,通过上个命令,你创建了一条注释为 “first commit” 的 Git 提交。

  1. 注意
    每次提交,您都必须用 -m + ‘注释’ 编辑注释信息 。它不仅能协助您辨别不同的版本,而且能让你理解,自己当时对文件做了什么修改。
    比如当你每次在文件中添加了新的代码后,你可以写一句提交信息:“添加了 XXX 代码” —— 当你一个月后回来看提交记录或者 Git 日志 时,你还能知道当时做了什么。
  2. 将本地仓库代码推送到Github远程仓库
git remote add origin 仓库链接

add 很容易明白 —— 添加。git remote add 表示通知 Git 去添加一个远程仓库,后面接上的 origin 是这个仓库的小名,方便以后沟通,通常默认用 origin 来表示;最后再接上远程仓库的地址,即你刚刚创建的 Github 仓库链接。

图片描述

push.

push 顾名思义,就是推送, 使用 push 可以把本地仓库推送到远端仓库中。

具体命令如下:

git push origin master

执行后,GitHub服务器 需要验证你的身份,按提示输入你的用户名和密码即可完成 push 同步。

分支的概念:分支在多人协作中经常会被用到,但前期我们用不到这个功能,为了不给你增加认知负担,这里就先不讲了。你只需知道 Git 管理的项目进程中,有一条默认的主分支 - master 即可。(想象 Git 是一棵树,master 就是树干,树干上还可以生出很多分支来,如 master 2.0、master 3.0 等

图片描述

7.git 查看记录修改(log & diff)

git log #会提示我们commit的记录,是哪个人提交的,提交的日期,以及提交记录的修改信息
git log --oneline #将历史所有的提交信息罗列出来
#如果想查看这次还没add的修改部分和上一次commit的文件有何不同,我们将用
git diff #可以看出两个文件有何不同 '-':代表删除 '+':代表添加
#如果已经git add后,文件变成了提交状态,我们将用
git diff --cached 查看
# 还有一种不管你是否将文件git add,都能进行查看的命令:
git diff HEAD

8.git 返回到从前的状态:

git reset 文件名 #使在add后的文件返回没add状态
git reset --hard HEAD or git reset --hard id号码#将这次add后的文件回到过去
git reflog #将所有的HEAD的变化记录下来,并且返回每一个变化记录的id以及信息
reset在commit中来回穿梭

使用chekout使单个文件回到过去版本
git checkout id号 --文件名

9.git branch(分支):

很多时候我们需要给自己或者客户用一个稳定的版本库, 然后同时还在开发另外一个升级版. 自然而然, 我们会想到把这两者分开处理, 用户使用稳定版, 我们开发我们的开发版. 不过 git 的做法却不一样, 它把这两者融合成了一个文件, 使用不同的分支来管理.通常我们会把 master 当作最终的版本, 而开发新版本或者新属性的时候, 在另外一个分支上进行, 这样就能使开发和使用互不干扰了.

alt branch introduce

# 使用checkout创建dev(develop)branch
git branch dev
git branch # 查看当前分支
# 切换当前分支
git checkout dev #从master分支切换到dev分支

# 创建新的分支并切换到新创建分支(一步到位)
git checkout -b dev

# 如果要update之前上传过的文件,可以使用
git commit -am "information" #"-am": add All change and commit

# 将dev的修改推送到master
git checkout master # 切换到master分支再将其他分支合并过来

git merge dev  #将dev merge到 master 中
git log --online --graph  # 打印出history of change

要注意的是, 如果直接 git merge dev, git 会采用默认的 Fast forward 格式进行 merge, 这样 merge 的这次操作不会有 commit 信息. log 中也不会有分支的图案. 我们可以采取 --no-ff 这种方式保留 mergecommit 信息.

git merge --no-ff -m "keep merge in fo" dev # 保留merge信息
  1. conflict of branch(分支冲突):

如果有人在做dev版本的update,还有人在修改master上的bug,当我们在merge dev的时候冲突就发生了。因为git不知道怎么处理merge的时候,在master和dev的不同修改。

git 发现的我们的 1.pymasterdev 上的版本是不同的, 所以提示 merge 有冲突. 具体的冲突, git 已经帮我们标记出来, 我们打开 1.py 就能看到:

a = 1
# I went back to change 1
<<<<<<< HEAD
# edited in master
=======
# edited in dev
>>>>>>> dev

# 所以我们只要在 1.py 中手动合并一下两者的不同就 OK 啦. 我们将当前 HEAD (也就是master) 中的描述 和 dev 中的描述合并一下.

a = 1
# I went back to change 1
# edited in master and dev

# 然后再commit现在的文件,conflict就resolve了
git commit -am "solve conflict"

alt branch 2

11.git stash(临时修改区):

假设你正在修改dev分支上的bug,但是Boss直接打电话让你去update master分支的文件。你不得不照Boss的意思做。毕竟你还是个打工仔。那么你又不想将dev分支未完成的work commit。这时候我们就将dev未完成的work存放到stash。然后就转去master 进行update。

git checkout dev
git status -s
git stash
git status

掌握以上命令。您就可以在本地管理您的文件,并且能将您的project分享到Github仓库托管了。

参考:

Morvan

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git 入门教程 的相关文章

随机推荐

  • 一日一技:Ocelot网关使用IdentityServer4认证

    概述 Ocelot是一个用 NET Core实现的开源API网关技术 IdentityServer4是一个基于OpenID Connect和OAuth2 0的针对ASP NET Core的框架 xff0c 以中间件的形式存在 OAuth是一
  • Android Studio模拟器启动后不停闪烁(未解决)

    问题描述 xff1a Android Studio模拟器启动后不停闪烁 解决方法 xff1a 右侧点击Device Manager打开设备管理 xff0c 点击修改标志 将Graphics 图样 换成Software 软件 xff0c 点击
  • 复杂网络建模的实现(哈工大深圳复杂网络建模课程Project)

    任务 xff1a 1 xff0c 三张不同的网络 xff1a 已知某人的名称 已知某人的家乡 已知某人的方言 分析这三者各自的网络性能 xff08 节点度数分布 平均最短路径长度 集聚系数 xff09 以及动态行为 xff08 在刻意攻击
  • 免登陆Oracle官网下载JDK

    Oracle官网下载JDK 方法一 免登录下载 进入官网 xff0c 选择需要下载的JDK版本 xff0c 这里以JDK8为例 点击下载 xff0c 勾选同意 在正常情况下 xff0c 点击 Download jdk 8u333 windo
  • linux rancher 清理docker容器磁盘空间

    目录说明 var lib docker containers xff1a 是 Docker 在 Linux 系统上默认存储容器信息的目录 在该目录下 xff0c 每个运行的 Docker 容器都有一个单独的目录 xff0c 以容器 ID 命
  • 如何在官网下载COCO数据集

    官网地址 xff1a https cocodataset org download 1 选择下载的数据 xff0c 右键 xff0c 获取下载地址 2 将 http 改为 https 示例获得的下载地址为 xff1a http images
  • 两个互相引用对象的垃圾回收

    部分转自 xff1a 深入理解java虚拟机 一书 判断对象是否存活 1 引用计数算法 给对象添加一个引用计数器 xff0c 每当有一个地方引用它时 xff0c 计数器值就加1 当引用失效时 xff0c 计数器值就减1 任何时刻计数器为0的
  • ssm整合时,通过jdbc.properties文件无法连接mysql问题

    最近在重温ssm框架 在搭建基础的项目进行单元测试时 xff0c 发现无法连接mysql数据库 通过各种查资料终于发现了原因 原始jdbc properties文件 由于username这个属性会被系统的username变量覆盖 xff0c
  • Mysql数据库之左连接left join 右连接right join 内连接inner join

    最近 xff0c 公司的用户达到了700 43 万 xff0c 意味着数据库已经达到700 43 万 xff0c 聊聊傻傻分不清的连接查询吧 xff01 前提 数据库中一共有三个表 class book phone 而且每个数据库表中都有1
  • VMware虚拟机软件,配置Linux Ubuntu操作系统环境,及安装问题总结大全

    文章目录 1 xff1a 前言2 xff1a 基本认识3 下载环境4 xff1a VM虚拟机的安装5 xff1a ubuntu的下载6 xff1a 把ubuntu安装在VM虚拟机上7 VMware Tools工具8 Source insig
  • linux常用命令(Beginner note)

    命令 ls 列出所有文件及文件夹 ls 路径 xff1a 列出所给路径下的所有文件及文件夹 选项 xff1a xff08 可组合使用 xff0c 也可简写组合形式 xff0c 例 xff1a alh xff0c 无先后顺序 xff09 a
  • 利用JS-SDK微信分享接口调用(后端.NET)

    一直都想研究一下JS SDK微信分享的接口调用 xff0c 由于最近工作需要 xff0c 研究了一下 xff0c 目前只是实现了部分接口的调用 xff1b 其他接口调用也是类似的 xff1b 在开发之前 xff0c 需要提前准备一个微信公众
  • Linux文件查找find

    1 find查找概述 为什么要有文件查找 xff0c 因为很多时候我们可能会忘了某个文件所在的位置 xff0c 此时就需要通过find来查找 find命令可以根据不同的条件来进行查找文件 xff0c 例如 xff1a 文件名称 文件大小 文
  • Linux文件打包与压缩

    1 文件打包与压缩 1 什么是文件压缩 将多个文件或目录合并成为一个特殊的文件 比如 搬家 脑补画面 img 2 为什么要对文件进行压缩 xff1f 当我们在传输大量的文件时 xff0c 通常都会选择将该文件进行压缩 xff0c 然后在进行
  • 集中式版本管理SVN与分布式版本管理Git的区别

    集中式版本控制系统SVN CVS 先说集中式版本控制系统 xff0c 版本库是集中存放在中央服务器的 xff0c 而大家工作的时候 xff0c 用的都是自己的电脑 xff0c 所以要先从中央服务器取得最新的版本 xff0c 然后开始工作 x
  • chatgpt Linux 定时任务 清理rancher pod启动服务的日志文件 脚本

    Linux 定时任务执行命令 假设我们想要每隔X分钟 每隔X天 每天X点执行一个脚本文件 xff0c 可以使用 Linux 自带的 cron 工具来创建定时任务 清理步骤 您可以使用 Linux 自带的 cron 工具来创建定时任务 xff
  • Http协议的几种常见状态码

    在开发好了网站后 xff0c 用户通过URL对资源进行操作 xff0c 服务器端要告诉用户交互的结果 xff0c 比如新增资源是成功还是失败了 一个较好的办法就是遵循HTTP协议 xff0c 使用请求响应的HTTP状态码 xff08 Sta
  • 推荐画UML图以及流程图的在线网站Site

    记得当年学UML课程的时候 xff0c 当你还在为了安装Rose而发愁的时候 xff0c 人家都把作业给交了 xff0c 并且现在大多数UML课程都会让学生使用Rational Rose做画图练习 近来 xff0c 做毕业设计需要提供各种流
  • 浙大PTA平台上的题目题解

    记载一些题目的代码 xff0c 之后想要在b站讲题目 xff0c 到时候会把录的视频上传b站 不是大佬 xff0c 是蒟蒻 xff0c 大佬勿喷 xff0c 仅供参考 xff0c 欢迎大家star xff0c qwq 浙大版 C语言程序设计
  • git 入门教程

    想要将一个项目托管到github xff0c 需要进入项目所在文件夹进行git init命令初始化 Git提交代码的基本流程 xff1a 创建或修改 本地文件使用 git add 命令 xff0c 将创建或修改的文件添加到本地的暂存区 xf