Git 学习笔记

在开始任何命令之前,先上一张图,下面的所有的命令都是围绕这张图展开的

概览图

常用命令

初始化本地库

git init

会生成一个.git结尾的隐藏文件

查看工作区文件的状态

git status

红色表示新增或者被修改的文件,绿色表示被管理(添加进缓存区)的文件,git status命令查看不到被上传到本地库的文件

在这里再拓展一个命令: git checkout --file 可以撤销在工作空间对这个文件的修改

将文件添加进缓存区

git add .
git add [文件名]

把项目移除出缓存区

git -rm --cached [名称]

提交到本地库

git commit -m '描述信息'

查看历史提交

git log
git reflog

回退到上一个版本

假设我们的版本迭代顺序是: 版本1 -> 版本2 -->版本3

  • 先从版本3 回退到版本2
git log // 目的是找到历史版本的md5 tag值
git reset --hard [md5格式的tag值]

// HEAD表示当前版本 
// ^ 表示上一个版本,100个^表示 : 第前100个版本
git reset --hard HEAD^ 
  • 再从2回退到版本3
git reflog // 目的是找到历史版本的md5 tag值
git reset --hard [md5格式的tag值]

找回已经删除的文件

找回已经删除的文件是有前提的,什么前提呢? 前提是: 这个被删除的文件曾经被上传到过本地库

第一种情况:,我们在本地将文件删除了,并且这次更改的操作被commit到本地库,那么我们回退一下版本不就把文件找回来了?

第二种情况:,我们在本地删除了这个文件,但是我们还没有将这次操作commit提交到本地库,于是我们使用下面的命令,目的是,重新检出文件

git reset --hard [指针HEAD的hash值]

分支

分支的目的是隔离不同的环境

指针的概念: 比如说在master是已经上线了的主分支,它里面存在1000个文件,还有第二个叫dev的开发分支,在这个所有的新功能的拓展都在这个用来开发的分支上编写,假设又新增了100个文件,其实这个叫dev的分支器中真正保存的是自己新增的100个文件,其他的1000个文件通过指针的方式指向master分支

查看当前的分支

git branch

创建分支

git branch [分支名]
git checkout -b [分支名]

删除分支

git branch -d [分支名]

合并分支

git merge [分支名]

如何紧急修复bug

紧急解决线上bug

如上图: 采用分支的特点,可以灵活的解决线上的bug,为什么非的新开辟一个临时分支呢? 因为如果想让dev分支去修改bug是一个得不偿失的行为,很可能这时dev分支的开发人员已经写了很多天的新代码了,让dev去修复bug,就的先让dev将本地的未写完的代码提交到本地库,然后从master分支上拉取代码到本地,这样诚然可以修改bug,但是修改完了后怎么提交呢? 没法提交啊,新代码往哪里放?

综上:,需要新开辟一个临时分支,临时分支,让临时分支去修改bug,然后让master去merge这个临时分支,bug修复后,临时分支可以剔除

本地的当前项目存在多个分支的话,做了个改动后得先提交到本地库才能再切换分支

产生冲突时报错

在merge时,难免出现代码冲突,向下面这样报错

$ git merge dev
Auto-merging index2.html
CONFLICT (content): Merge conflict in index2.html
Automatic merge failed; fix conflicts and then commit the result.

这时需要我们手动去解决,然后重新 add到缓冲区,再commit到本地库,git会我们生成类似下面这样的字符串

hello one git
    9  <<<<<<<<<<<HEAD
    10 hello two git  edit by hot_fix
    11 ===========
    12 hello two git  edit by master
    13 >>>>>>>>>>> master
    14 hello three git

github

配置免密登录

  • URL方式
默认的原始地址:
git remote add origin https://github.com/zhuchangwu/CIOC.git
git push -u origin master

修改:
git remote add origin https://用户名:密码@github.com/zhuchangwu/CIOC.git
git push -u origin master
  • SSH
执行 ssh-keygen 命令: 在本地生成公钥个私钥
默认会生成在 ~/.ssh目录下面  
id_rsa.pub 是公钥
id_rsa 是私钥

我们需要做的就是拷贝公钥的内容配置进github中,再从github中获取到下面的信息,回到本地库进行认证

git remote add origin git@github.com:zhuchangwu/CIOC.git
git push -u origin master

从github上克隆项目

git clone [ssh地址]

项目被克隆到本地后,如果这个项目存在多个分支,我们同样可以使用git checkout [分支名] 切换到不同的分支下面

新建仓库

在github上新创建仓库后,她会给我们一些提示信息,比如说,如何初始化本地库,如何将本地库和远程库管理起来,如何往远程库推送代码,如下图

上面有一行命令是git remote add origin git#githubXXX.git,什么意思呢? 这其实是给后面那一长串地址取别名叫 origin,从这以后命令中,origin==后面那一长串

往github上推送代码

将本地库中的代码推送上去

git push -u origin master
git push origin master  // -u可以省写

从github上面拉取代码

拉取到工作区

git pull origin master

从github拉取的本地库

git fetch origin 分支

实用的rebase(变基)

  • 实用情景1: 小王为了开发在线聊天功能,前前后后往本地库里面提交了10次,为了方面别人查看,于是小王使用下面的命令合并提交记录
// 从最新的commit记录往下数,合并n条记录(包含n)
git rebase -i HEAD~n  

// 从最新的commit记录往下合并,直到md5为指定值的那条commit(包含这条commit)
git rebase -i md5值
  • 目的是将下面的存在分支的提交记录,整合成没有分支的提交记录

整合前

rebase前

整合后

rebase后

git checkout dev 
git rebase master
git checkout master
git merge dev

// 查看
git log --graph
  • 情景三: 当本地库对A功能新添加了一些代码,但是在开始新的开发前需要从远程的github中拉取一些其他人新增的关于A功能的代码时,两者合并不仅仅会产生冲突,还存在分支,使用rebase解决
git fetch origin dev
git rebase origin/dev

配置文件

git中存在三个配置文件: 优先级: 当前项目的配置文件优先级最高,最次是系统的配置文件

第一个: 位于 项目/.git/config

它里面的配置信息仅对当前项目有效,比如我们前面给ssh串取别名叫origin,就是对当前项目有效

git config --local user.name 'XXX'
git config --local user.email 'XXX'

第二个: 位于 用户目录/.gitconfig

git config --global user.name 'XXX'
git config --global user.email 'XXX'

第三个: 系统的配置文件

linux: /etc/.gitconf

acer : C:\Users\acer\.gitconf

git的忽略文件

凡是和.git目录在同一级目录下面的文件都会被git检测并管理起来,被管理起来就意味着这些文件终究会被推送到远程库,但是有一些数据文件被推送出去会产生安全性的问题,如果我们不想让这些文件被git管理就可以使用git的忽略文件

创建.gitignore结尾的文件,git会读取这里面的文件,并且会忽略这里面配置的文件

.gitignore
files/
*.txt

github搜索 gitignore有惊喜

最后再附上一张总结图:

总结图

到这里本文又行将结束了,总体的节奏还是挺欢快挺带劲的,我是bloger-赐我白日梦,如果有错误欢迎指出,也欢迎您点赞支持...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Git安装和使用 Git安装和使用 刚开始用git的小白适用,,转自http://www.cnblogs.com/qijunjun/p/7137207.html 实际项目开发中,我们经常会用一些版本控制器来托管自己的代码,今天就来总结下Git的相关用法,废话不多说,直接开写。 目的:通过Git管理g
fatal: remote origin already exists.解决方法 第一个问题git remote add origin**************fatal: remote origin already exists.(报错远程起源已经存在。)上网查了下,有很多小白遇到过这个问题,以
git常用命令(二)查看历史记录 git log [--pretty=oneline] [ --oneline] / reflog Eniac-W 于 2020-10-18 18:12:38 发布 2368 收藏 3分类专栏: git 文章标签: git版权 git专栏收录该内容10 篇文章0 订阅
git之如何把本地文件上传到远程仓库的指定位置 git专栏收录该内容2 篇文章0 订阅订阅专栏2018.11.26添加内容: 对于自己的仓库,我们建议将远程仓库通过clone命令把整个仓库克隆到本地的某一路径下。这样的话我们从本地向远程仓库提交代码时,就可以直接把需要提交的文件拖到我们之前克隆下来的
代码规范之 lint-staged 在代码提交之前,进行代码规则检查能够确保进入git库的代码都是符合代码规则的。但是整个项目上运行lint速度会很慢,lint-staged能够让lint只检测暂存区的文件,所以速度很快。 安装与配置 安装husky和lint-staged: yarn add hu
方法:1、文件没有git操作时用“git checkout--文件”命令还原;2、文件提交到暂存区时用“git reset HEAD”命令回退当前版本还原;3、文件提交到仓库区时用“git reset HEAD^”命令回退上一个版本还原。 本文操作环境:Windows10系统、Git2.30.0版、
使用Git将本地文件提交到远程仓库 一 操作准备条件: git远程仓库已经建好了,本地文件已经存在了,现在要将本地代码推到git远程仓库保存。 解决办法如下: 1、(先进入项目文件夹)通过命令 git init 把这个目录变成git可以管理的仓库 git init 2、把文件添加到版本库中,使用命令
GitHub克隆代码到本地全教程 因为工作原因更换电脑,想要从GitHub上拉取代码的话需要重新配置ssh keys,时间过的久了怕忘记就把步骤给记录下来。 具体步骤: 1.安装git 这我就不说了 2.在TortoiseGit的安装文件中找到 puttygen.exe应用程序 ,默认应该都是 :C
github上传项目的时候报出git@github.com: Permission denied (publickey). fatal: Could not read from remote repo 前言 会不会有程序员小伙伴在刚开始使用github的时候上传项目的时候困难重重,但是又基于自己本身
查看历史 git log --pretty=onelinegit log (然后一直按enter键) 一个是切换根据历史里面的id切换git checkout ID git log 需要不断按enter键出来历史提交记录 git log --pretty=oneline 是直接出来历史记录
Git工作原理及常用命令 欧怼怼发布于&#160;2020-12-08 git介绍 git(读音/ɡɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。 git
git git提交项目的具体流程 git项目流程:以下主要有3个角色:负责人、成员A、成员B(若负责人也要修改代码,则负责人同时兼任2个角色:负责人、成员) 主要负责人:搭建项目架构且提交到git上1.github官网登录后,新建仓库,生成地址url,复制线上仓库.git结尾的地址url2.在一个空
git上传项目全部流程 一、下载git 进入网址:https://git-scm.com/downloads; 点击中的Download 2.16.0 for Windows; 在中选择蓝色字段点击,根据电脑64或32位选择适合的下载,点击即可进行下载,下载完成后傻瓜式安装,一直点击下一步即可完成安
Your local changes to the following files would be overwritten by checkout问题的解决 于 2018-07-17 11:38:27 发布 Git 的本地版本管理有三个部分 名称&#x9;说明工作区(Working Directory)&#x9;
Git配置SSH Keys步骤使用教程 1.若是首次安装使用git,先配置用户名称和邮箱(如果有就不需要配置) 打开Git Bash,输入 git config --global user.name &quot;姓名&quot;git config --global user.email &quot
基本配置完成,接下来就是上传你要上传的项目了。 1、初始化git 进入你要上传的项目的文件夹,在文件夹内鼠标右击,选择“Git Bash Here”打开git命令行,输入: $ git init 目的是初始化git,并且会创建个“.git”文件夹,里面有个“config”就是用来保存远程厂库路径地址
本篇内容主要讲解“gitee如何上传代码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“gitee如何上传代码”吧! ...
这篇“从gitee上下的代码如何用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这...
这篇文章主要介绍“gitee如何下载仓库里的项目”,在日常操作中,相信很多人在gitee如何下载仓库里的项目问题上存在疑惑,小编查阅了各式资料,整理出简单好用的...
本篇内容主要讲解“怎么在Gitee上更新代码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在Gitee上更新代...