首页 > 其他分享 >Git基础学习

Git基础学习

时间:2023-08-08 15:59:26浏览次数:33  
标签:文件 git 本地 -- 基础 学习 Git 提交 分支

语雀不支持公开分享了,打算将博客转移阵地,目前先把以前的博客转录进来

1.介绍

git cmd 类似Windows的cmd操作
git Bash 类似Linux下的操作
git Gui 图形化操作,操作太慢了,一般不使用

2.基本命令(Linux)

  • cd ..回退到上一个目录
  • pwd 显示当前所在的目录
  • ls 显示当前目录的所有文件
  • touch 新建一个文件 例如:touch index.js
  • rm 删除一个文件夹
  • rm 删除一个目录 例如:rm -r src 删除src目录
  • mv 移动文件 例如:mv index.html src index.html
  • reset 初始化终端
  • clear 清屏
  • history 查看历史命令
  • exit 退出
  • # 号表示注释

3.配置Git

  • git config -l 查看所有配置
  • git config --system --list 查看系统配置
  • git config --global --list 查看用户全局配置

4.环境变量

安装时自动放入环境变量,无需配置

5.基本理论

5.1.分为四个工作区域:

  • workspace 工作目录(本地)
  • index/stage 暂存区(暂存)
  • repository 资源库(本地仓库)
  • remote 远程区(git远程仓库)

5.2.核心命令

  • git add 本地放入暂存区
  • git commit -m '备注备注' 暂存区放入本地仓库
  • git push 本地仓库提交到远程仓库
  • git clone/fetch 将文件复制到本地
  •   git clone <版本库的url>
    
  • git pull 将文件拉取并合并到本地
  •   git pull <远程主机名> <远程分支名>:<本地分支名>
    

5.3.分支

  • master 主分支
    除了主分支 还有其他个人的分支
  •   删除分支 git branch -d 分支名字
    
  •   创建分支 git branch 分支名字
    
  •   切换分支 git checkout 分支名字
    
  •   合并到主分支 git merge 分支名字
    
  •   查看合并后的分支 git branch --merged
    
  •   查看未合并的分支 git branch --no-merged
    
  •   查看状态 git status
    
  •   打开文件查看冲突,确定保留什么内容,修改内容后,删除<<<<<<< , ======= , 和 >>>>>>>这些标记。保存文件。
    
  •   将文件保持到暂存区 git add .
    
  •   提交文件到本地仓库 git commit -m '文件'
    
  •   提交到远程仓库 git push
    

5.4.文件操作

5.4.1.理论

  • untracked 未跟踪(在文件夹中,未加入git,未参与版本控制) 通过git add 将状态变为staged;
  • unmodify 文件已经入库,未修改
  •   有两种去处:被修改变为`modify`,使用`git rm`移除版本库,则变为`untracked`文件; 
    
  • modified 文件已修改,仅修改,未作其他操作
  •   也有两个去处:通过`git add` 可进入暂存staged状态,使用`git checkeout`则丢弃修改过,返回到`unmodify`状态,这个`git checkout`即从库这种取出文件,覆盖当前修改; 
    
  • staged 暂存状态
  •   执行`git commit`则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为`unmodify`状态,执行`git reset HEAD filename`取消暂存,文件状态为`modify `
    

5.4.2.文件提交操作

查看文件状态
git status

添加本地工作区
git add .

提交到本地
git commit -m '文件'

5.4.3.文件忽略操作

  • *.txt 忽略所有以.txt结尾的文件,这样的话上传不会被选中
  • !666.txt 忽略666.txt这个文件
  • /temp 忽略temp文件的上一级的文件夹的内容,但不会忽略其他目录下的temp
  • build/ 忽略build/文件夹下面的所有文件
  • doc/* .txt 会忽略doc子目录下的.txt文件 例如: 会忽略doc/notes.txt,但不包括doc/server/arch.txt

5.5.使用gitee

  • 设置本机免密码登录
  1. 本机访问C:\Users\用户\ssh目录
  2. 输入命令ssh-keygen -t rsa
  3. 访问ssh/id_rsa.pub文件,记事本打开复制ssh公钥
  4. 登录gitee->设置->ssh公钥->粘贴刚刚复制的ssh公钥

6.使用场景以及使用出现的问题

6.1.如何强制覆盖本地文件

错误命令:
error: Untracked working tree file 'public/images/icon.gif' would be overwritten by merge.

使用git reset命令(注:所有未被推送的本地提交都将丢失

点击查看代码
在重置之前可以通过从master创建一个分支来维护当前的本地提交:
git checkout master
git branch new-branch-to-save-current-commits

从远程下载最新的,而不尝试合并或rebase任何东西
git fetch --all

将主分支重置为您刚刚获取的内容
git reset --hard origin/<branch_name>

6.2.如何同时删除本地分支和远程分支

点击查看代码
删除分支使用--delete(-d)选项,命令如下:
git push --delete <remote_name> <branch_name>
git branch -d <branch_name>

只删除本地分支
git branch -d branch_name
git branch -D branch_name

6.3.如何撤销最近一次提交

点击查看代码
1.如果你只是在本地进行提交commit,还没有推送push到远程,可以使用它来撤销
git reset HEAD~

保留提交之后的本地文件修改(soft 保留)
git reset --soft HEAD~ 

不保留提交之后的本地文件修改(hard 不保留)
git reset --hard HEAD~ 

弄错了一次错误提交
git commit -m '错误提交'

撤销本地提交
git reset HEAD~

修改文件后继续提交
git add ...
git commit -c ORIG_HEAD

2.如果你已经把提交推送到远程,只能本地回滚然后再次提交

回滚到上一次的命令使用
git revert HEAD

对文件重新修改后提交到远程即可

6.4.如何在提交之前撤销

点击查看代码
1. git add错了一个配置文件
git add db.conf

2. 撤销上一次git add
git reset db.conf

6.5.提交代码时发生冲突不能合入

发生场景:Web端对分支进行了操作,但是本地端没有git pull同步代码就修改提交,导致两部分代码冲突。

点击查看代码
1. 在本地仓库中, 更新并合并代码
git fetch origin
git rebase origin/uusama

2. 依据提示分别打开冲突的文件, 逐一修改冲突代码

3. 所有冲突都修改完毕后, 提交修改的代码
git add -u
git rebase --continue

4. 提交代码到远程分支 uusama
git push origin HEAD:refs/for/uusama

6.6.两个分支之间出现冲突如何解决

发生场景:比如当前有一个共有的开发分支dev(基准分支),个人分支uusama两个分支出现冲突。

点击查看代码
1. 拉取分支需要解决冲突的分支
git checkout uusama

2. 从基准分支合并
git merge --no-ff origin/dev
git add .
git commit -m "合并分支解决冲突"

3. 提交代码到远程分支 uusama
git push origin HEAD:refs/for/uusama

6.7.解决代理问题

发生场景:遇到了Failed to connect to www.google.com port 80: Timed out

点击查看代码
1.查询到当前设置的代理
git config -l

2.关闭http代理
git config --global --unset http.proxy

3.关闭https代理
git config --global --unset https.proxy

标签:文件,git,本地,--,基础,学习,Git,提交,分支
From: https://www.cnblogs.com/yumn/p/17614561.html

相关文章

  • 前端基础-数组方法
    数组方法备忘单:添加/删除元素:push(...items) ——向尾端添加元素,pop() ——从尾端提取一个元素,shift() ——从首端提取一个元素,unshift(...items) ——向首端添加元素,splice(pos,deleteCount,...items) ——从 pos 开始删除 deleteCount 个元素,并插入 i......
  • 机器学习方面各层次书籍推荐
    1基础强数学型1.1FoundationsofMachineLearning豆瓣评分9.0(103人)有大量的数学公式推到和课后习题,用来提升对于机器学习原理公式的理解 1.2统计学习方法李航+b站带读  2入门型漫画机器学习入门零基础机器学习 ......
  • 线段树合并学习笔记
    基本思路线段树合并其实就是简单的暴力合并就可以了。一般是运用于权值线段树。通常是在每个节点都需要要一颗线段树才能维护答案,且有多个节点时,会使用线段树合并。但每个节点所有的权值不能太多,如果都是比较满的二叉树的话,时间复杂度就会很高。通常,加入值的数量跟节点数量在同......
  • 如何学习一门新语言(针对初学者)
    程序员之道,万变不离其宗,说相声讲究的是说、学、逗、唱,学习程序最快也是最好的办法就是:过、抄、仿、改、调、看、练、创、悟: 1、过:学习一门新的语言,第一步就是把它所涉及的基础知识大体过一点,不求深解,只求了解——第一遍:无需了解太过深入的理论,大体知道这门语言是什么样的,主......
  • typeScript学习-类型注解、类型推导
    typeScript学习类型注解声明时定义变量固定类型letdata:number=3data=4interfaceStudent{ name:string, age:number} letstuObj ={name:25,age:'zhangsan'} 类型推导声明时候没有定义变量类型,在赋值时定义的变量类型letdata=3......
  • typeScript学习-定义、环境搭建
    typeScript学习定义:融合了后端面向对象思想的超级版的javaScript语言。环境搭建://创建一个package.json文件//-y/--yes完全跳过问卷npninit-y//typescript全局安装//创建一个tsconfig.json文件npminstalltypescript-gtsc--init//typescript......
  • Linux基础知识
    第1章Linux入门一、Linux基本知识1、Linux介绍1.1简介Linux是一种操作系统,像Windows一样,但是Windows操作系统,个人终端用的比较多1.2特点免费、开源、安全、高效、稳定;处理高并发非常的强,很多企业的项目都部署到Linux服务器上运行1.3创始人:林纳斯(芬兰人),1991年发布1.4吉祥物:一只企......
  • 高频SQL 50题(基础版): 寻找用户推荐人 | 2023-08-08
    问题表:Customer+-------------+---------+|ColumnName|Type|+-------------+---------+|id|int||name|varchar||referee_id|int|+-------------+---------+在SQL中,id是该表的主键列。该表的每一行表示一个客户的id......
  • 【C语言基础练习】
    学习来源:https://www.bilibili.com/video/BV1q54y1q79w/?spm_id_from=333.337.search-card.all.click1.判断一个数是否为奇数。#include<stdio.h>intmain(){ inta; printf("请输入需要判断的数字\n"); scanf_s("%d",&a); if(a%2==1) printf("奇数\......
  • Docker初级秘籍之基础命令篇
    一、镜像篇1.查看镜像dockerimages2.查看所有镜像iddockerimages-q3.搜索镜像dockersearch镜像名称4.拉取镜像dockerpull镜像名称(:版本号)5.删除镜像dockerrmi镜像id#删除指定本地镜像dockerrmi`dockerimages-q`#删除所有本地镜像二、容器篇......