git详情、git工作流程、常用命令、忽略文件、分支操作、gitee远程仓库使用
今日内容概要
- git详情
- git工作流程
- git常用命令
- 过滤文件
- 分支操作
- git远程仓库使用
- 可参照:https://www.cnblogs.com/liuqingzheng/p/15328319.html
内容详细
1、git详情
1.1 git与svn比较
# git 分布式管理
每个客户端都能完成版本管理的功能
控制的对象是开发的项目代码
Git:无网络时也可以提交到本地版本库,待到有网络时再push到服务
# svn集中式管理
所有代码都放在服务端,版本管理由服务端完成
svn:无网络不可以提交
1.2 git,github,gitee,gitlab分别是什么
# Git:是一种版本控制系统,是一个命令,是一种工具。
# GitHub:是一个基于Git实现的在线代码托管仓库,包含一个网站界面,向互联网开放,公有仓库免费,部分私有仓库收费,全球最大的开源代码托管平台 git的远程仓库
# GitLab:是一个基于Git实现的在线代码仓库托管软件,可以通过GitLab自己搭建一个类似于GitHub一样的系统,用在企业内部网络搭建Git私服,用于企业团队内部协作开发 公司内部的github
# Gitee:(码云) 是 OSCHINA 推出的代码托管平台,支持 Git 和 SVN,提供免费的私有仓库托管,面向互联网开发,分免费和付费,中国最大的开源代码托管平台 中国版的github,为中国的开源软件事业,贡献自己的一份力量
2、git工作流程
# 本地分三个区:工作区,暂存区,版本库
工作流程指的就是三个区的来回操作
# 工作区文件变化
操作问题
# 工作区提交到暂存区
git add .
# 暂存区提交到版本库
git commit -m '注释'
# 版本库退回工作区没有更改的时候
git reset --hard 版本号
"""
1)有红色信息(工作区有内容),就执行 add
2)全绿信息(内容全部在暂存区),才执行 commit
3)只有被版本库控制的代码,才能被监听,所以可以回滚到任何一个版本
"""
3、git常用命令
# 0 配置用户信息
配置全局用户信息---》以后所有文件夹再提交到版本库显示的就是这个名字,所有的都显示这个名字
git config --global user.name 'lqz'
git config --global user.email '3@qq.com'
写在了用户家路径的 .gitconfig, 写入了以上信息
配置局部用户信息---》当前文件夹以后再提交到版本库显示的就是这个名字、
git config user.name 'liuqingzheng'
git config user.email '306334678@qq.com'
写在了仓库(gittest文件夹)路径下的 .git文件夹下的config文件
# 1 初始化仓库,会在当前文件夹下创建出一个 .git的隐藏文件夹, git配置 版本信息在里面
git init
# 2 查看状态--》红色,绿色,没有---》新增,修改,删除--》变红
git status
# 3 把工作区变化提交到暂存区---》变绿色
git add .
. 表示当前路径下所有变更
# 4 把暂存区提交到版本库 ---》从绿变无色
git commit -m '注释'
# 5 查看版本库的版本信息
git log # 查看代码版本信息,显示详细信息,但是变化记录的少
git reflog # 查看代码版本信息, 显示简略信息, 但是变化都会记录
# 6 工作区回退到某个版本
git reset --hard 版本号
git reset --hard 版本号
# 7 其他,不需要太了解,基本不用
把工作区变化撤销
git checkout .
把暂存区拉回到工作区(绿变红)
git reset HEAD
# 注意 :
.git文件夹做了记录,不能删除,如果删除,版本的记录也就没了
单独的空文件夹不会被版本管理
4、Git忽略文件
# Git工作目录中,有些文件必须要有,但又不能提交它们,就可以设置忽略文件
# 方法:
1 在仓库路径下(被git管理的文件夹),创建一个 .gitignore 的文件,在文件中写入忽略
2 文件与文件夹均可以被过滤
3 文件过滤语法
"""
过滤文件内容
文件或文件夹名:
代表所有目录下的同名文件或文件夹都被过滤
/文件或文件夹名:
代表仓库根目录下的文件或文件夹被过滤
举例:
a.txt:
项目中所有a.txt文件和文件夹都会被过滤
/a.txt:
项目中只有根目录下a.txt文件和文件夹会被过滤
/b/a.txt:
项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
*x*:
名字中有一个x的都会被过滤(*代表0~n个任意字符)
空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件)
"""
# luffycity--->vue项目---》vue create创建的(很慢)---》本质其实是从github上拉了一个空项目,改了一下名字,所以,它里面有git的版本管理(.git隐藏文件夹)
# 咱们后端项目的 过滤文件写法:
在项目根目录下创建:.gitignore 文件
写入:
.idea
__pycache__
*.pyc
logs/*.log
scripts
在空文件目录下 都创建包文件:
__init__.py
5、分支操作
# 分支是什么?
git 可以创建多条分支,创建完以后,在不同分支上提交版本,不同分支的版本相互不影响
"""
1.创建分支
git branch 分支名
2.查看分支
git branch
3.切换分支
git checkout 分支名
4.创建并切换到分支
git checkout -b 分支名
5.删除分支
git branch -d 分支名
6.查看远程分支(暂时先不看)
git branch -a
7.合并分支
git merge 分支名
把dev分支合并到master分支:
要先切换到master分支,执行合并dev分支的命令
"""
## 注意:分支合并可能会出冲突
原因是:master改了东西提交了,dev改了东西提交了,他们改的是同一个代码,合并就会出冲突
# 命令演示顺序:
git checkout -b dev
touch dev.txt
git add .
git commit -m 'dev分支增加了dev.txt'
git checkout master
git merge dev
----------
git checkout dev
git add .
git commit -m 'dev分dev.txt增加了一行'
git checkout master
git merge dev
------
6、git远程仓库
# 远程仓库
gitee,github,bitbucket,自己搭建的gitlab---》把本地版本库中的代码提交到远程仓库---》大家都提交,完成代码合并,协同开发
# 如果公司中用gitee,都是用私有仓库,不要把公司代码做成公有仓库
# 课程案例是传到gitee远程仓库,如果到了公司里使用的是gitlab,所有操作完全一致,只是远程地址不一样
6.1 把本地代码提交到远程仓库(https协议连接)
# 第一步:在远程创建一个空仓库
# 第二步:操作步骤
全局设置
git config --global user.name "liuqingzheng"
git config --global user.email "306334678@qq.com"
情况一:原来连本地仓库都没有
mkdir luffy_api
cd luffy_api
git init
touch README.md
git add README.md
git commit -m "first commit"
-----以上操作创建luffy_api项目时,已经做过了------
git remote add origin https://gitee.com/liuqingzheng/luffy_api.git # 添加一个远程仓库
git push origin master # 把本地仓库推到远程
情况二:原来本地有仓库
cd 到项目目录下
git remote add origin https://gitee.com/deity-jgx/luffy_api.git
git push origin master
6.2 remote源操作
# 1 查看远程仓库
git remote
#2 添加远程仓库
git remote add 起一个名字 远程仓库地址
git remote add origin 仓库地址
# 3 删除远程仓库
git remote remove origin
# 4 把本地仓库提交到远程仓库
git push 远程仓库名字 分支名
git push origin master
第一次:要输入用户名密码,只要输入一次,以后就记录到操作系统上了
win:凭证管理--》删除
mac:钥匙串---》搜
#5 从远端仓库更新代码
git pull 远程仓库名字 分支名
git pull origin master # 协同开发---》张三提交了代码到远端---》你要拉下来,把张三代码合并到你的本地
### 注意点:
在公司里,没事就git pull 一下,拉取代码的频率高,出现冲突的概率就小
写了一个星期代码,从来没有拉过,你也改了s1.py s5.py
这一个星期张三,李四王五,分别改了s1.py s2.py s3.py
你一提交---》多人在同一条分支上开发代码出现的冲突,出冲突了,需要解决冲突
##### 这几个会经常敲
git add .
git status
git commit -m
git pull origin master
git push origin master
6.3 ssh连接提交到远程仓库
# 刚刚咱们用的是https的连接方式,需要输入用户名密码
# 想使用ssh的连接方式,非对称加密的方式实现(不聊),需要公钥和私钥
把公钥配置到远程机器,私钥自己留着
我和远程机器就可以安全通信
# 本地生成一对秘钥:公钥和私钥
在新的cmd窗口操作:
ssh-keygen -t ed25519 -C "306334678@qq.com"
一路回车,就会在用户家路径的.ssh文件夹下生成一对公钥和私钥
# 把公钥配置到gitee上(gitlab,github)
看下图
直接将本地公钥文件内容复制到gitee
# 以后不需要输用户名密码,可以安全通信,pull,push代码没有任何阻碍
######### 远程仓库地址要变 ,原来是https的,现在变成ssh的连接
git remote remove origin
git remote add origin git@gitee.com:deity-jgx/luffy_api.git
git push oringin master
### 注意:
你的一个gitee账号,可以配置多个ssh公钥,如果你配置了多个ssh公钥,意味着有多台机器可以免密操作仓库
公司里ssh用的多
你到了公司,公司会给你gitlab账号和密码,地址,你要在本地生成ssh公钥和私钥,配置到你的gitee,gitlab上
6.4 协同开发引入
# 多人操作同一个仓库,多人写同一个项目
# 你们刚到公司,一般情况下,你会被添加为该仓库的观察者,你目前只能看,不能改,删
# 但是也有的公司直接给你开发者权限---》直接修改提交代码就行了
# 你们是开发者,第一次要clone代码
git clone https://gitee.com/deity-jgx/luffy_api.git
# 开发者可以修改并提交代码,没有人审核---》这个过程中可能会出冲突
git详情、git工作流程、常用命令、忽略文件、分支操作、gitee远程仓库使用的更多相关文章
- Git的原理简介和常用命令
Git和SVN是我们最常用的版本控制系(Version Control System, VCS),当然,除了这二者之外还有许多其他的VCS,例如早期的CVS等.顾名思义,版本控制系统主要就是控制.协调 ...
- git概念及工作流程详解
git概念及工作流程详解 既然我们已经把gitlab安装完毕[当然这是非必要条件],我们就可以使用git来管理自己的项目了,前文也多多少少提及到git的基本命令,本文就先简单对比下SVN与git的区别 ...
- Git深入浅出使用教程:Git安装、远程控制、常用命令(全)
一.软件安装 1.先安装[Git-2.24.1.2-64-bit.exe]软件.(官网下载的很慢,可以在百度云盘下载我的) 链接:https://pan.baidu.com/s/1uoIS9DWSBp ...
- Git很麻烦?只要掌握这几个命令,轻松将代码提交远程仓库
在上一章节,跟大家介绍了拉取代码的操作,简单暴力.这一章节要介绍的是如何将现有的项目,直接提交到仓库. 现在,如果大家有一个项目要提交到GitHub仓库,安装上一张的方法,需要先在GitHub上建一个 ...
- 【Git】(1)---工作区、暂存区、版本库、远程仓库
工作区.暂存区.版本库.远程仓库 一.概念 1.四个工作区域 Git本地有四个工作区域:工作目录(Working Directory).暂存区(Stage/Index).资源库(Repository或 ...
- Linux常用命令入门文件、网络、系统及其他操作命令
Linux常用命令入门文件.网络.系统及其他操作命令.压缩 归档 文件系统 系统管理 用户管理 网络管理 finger 相关命令 netstat ping rsh telnet wget 进程管理等 ...
- git将本地仓库中的文件上传到远程仓库
现在我们开始创建本地git仓库(版本库又叫仓库) (本地仓库:$ git init之后的目录): 1.任意地方新建文件夹aaa,右击git bash here, 2.弹出一个对话框, 3. 首先配置你 ...
- linux常用命令 查看文件
Linux常用命令 查看文件 cat命令 cat命令的用途是连接文件或标准打印输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示. 命令格式: cat [ ...
- [笔记]解决git本地仓库不能上传到gitee远程仓库的问题
关键词:git.gitee.码云.上传远程仓库失败 1.gitee有一个远程仓库名字是CommandModel,里面只有两个README文件 2.假如我目录 D:\eclipse\workspace ...
随机推荐
- hdu5197 DZY Loves Orzing(FFT+分治)
hdu5197 DZY Loves Orzing(FFT+分治) hdu 题目描述:一个n*n的矩阵里填入1~n^2的数,要求每一排从前往后能看到a[i]个数(类似于身高阻挡视线那种),求方案数. 思 ...
- 论文解读(GMI)《Graph Representation Learning via Graphical Mutual Information Maximization》
Paper Information 论文作者:Zhen Peng.Wenbing Huang.Minnan Luo.Q. Zheng.Yu Rong.Tingyang Xu.Junzhou Huang ...
- 用腾讯云Gogs搭建私有git服务器
前言 经常有需要写不能公开代码的项目,所以只好自己搭建一个私人的git服务器 Gogs的好处在于比Gitlib轻量化了好多,而且是国人写的,官方主页也是中文的 Gogs首页 腾讯云服务器配置: Ubu ...
- python3 爬虫3--异常处理
本文学习内容来自:https://germey.gitbooks.io/python3webspider/content/ urllib库中有URLError类,request模块产生的错误都可以通过 ...
- 说说对 SQL 语句优化有哪些方法?(选择几条)
1.Where 子句中:where 表之间的连接必须写在其他 Where 条件之前,那些可 以过滤掉最大数量记录的条件必须写在 Where 子句的末尾.HAVING 最后. 2.用 EXISTS 替代 ...
- 什么是 AQS ?
AQS 是 AbustactQueuedSynchronizer 的简称,它是一个 Java 提高的底层同步工具类,用一个 int 类型的变量表示同步状态,并提供了一系列的 CAS 操作来管理这个同步 ...
- Element-UI资源原型库
Element-UI v2.0.0版本 Axure和Sketch库: 链接:https://pan.baidu.com/s/1LdsEh8BKQBjcWBKV5yQilQ 提取码:1xqn
- ThreadLocal是什么?使用场景有哪些?
什么是ThreadLocal? ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本. 测试代码: package ...
- 攻防世界杂项MISCall
MISCall 下载下来是一个附件但是不清楚他是个什么东西我先拉入kali看看 发现是一个tar包不过这个包我们需要使用以下的指令来解压 tar -xjvf d02f31b893164d56b7a8e ...
- 180度\360度sg90舵机的使用及代码程序
大部资料都是在网上找到网友大神所共享的,在网上找了几种舵机的,刚接触有点懵,之后找得多了就理解了,想要控制一个硬件就要先了解这个硬件.这里有介绍180度舵机和360度舵机的具体使用,有网上大神的程序, ...