IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 分布式版本控制--GIT -> 正文阅读

[开发工具]分布式版本控制--GIT

一.GIT和SVN的区别

SVN采用的是集中式版本控制,即多个客户端访问一个服务器。只有在服务器上有一个远程仓库。提交代码直接提交到远程仓库。且SVN是没有暂存区概念的。

?

GIT使用的是分布式版本控制的策略,远程和本地都有一个参仓库。提交代码先提交到本地仓库,在push到远程仓库。

二.GIT使用

1.GIT安装

Linux:sudo yum install git或sudo apt-get install git

Windows:http://git-scm.com/download/win,

2.GIT使用

1)创建远程仓库

安装完毕后,新建一个远端仓库文件夹mkdir git_remote

使用git init --bare初始化一个空仓库(即使有代码了也不会展示出来安全级别高。但git init 创建的仓库是可以看见代码的),创建完毕后这样

2)创建本地仓库并拉去远端代码

创建文件夹repo-a

使用git clone 用户名@ip:/path? ?将远端仓库拉到本地(SSH)

如果客户端无法输入密码,可以在客户端生成公钥和密钥ssh-keygen -t rsa(-t 指定加密算法)??

生成文件如下:

?.pub后缀就是公钥。将pub文件里的内容拷贝到远端ssh的order目录下,就可以实现不用密码进行访问远端。这就是非对称加密。

对称加密:客户端和服务器端公用同种加密方式(比如MD5)对同一掩码值进行加密,比对加密后的数据

非对称加密:将pub文件放到服务器,本地数据连同id_rsa(私钥)一起发送到远端,远端通过公钥进行解密

3)git配置信息

使用git? config --list查看配置信息

git config --global user.name “yourname”
git config --global user.email xxx@gmail.com

当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行
没有 --global 选项的命令来配置。

?

?4)git的四个区域 ??

?

?Workspace: 工作区,就是你平时存放项目代码的地方

Index / Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息

Repository: 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本

Remote: 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

5)git工作流程

git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)

1、在工作目录中添加、修改文件;

2、将需要进行版本管理的文件git add到暂存区域;

? ? 把文件从暂存区里移除?使用git rm -f 或者 git rm –cached或者git restores -S?

3、将暂存区域的文件commit到git仓库?.

? 如何把本地仓库文件退回到暂存区?

先使用git reflog?到查看当前历史版本

再使用git reset (--mixed) head~1 表示commit回退到上一个版本,对于刚提交的那个commit,则会回退到以下几种情况

git reset --mixed head~1(默认操作)回退到编辑状态workspace
git reset --soft? ? head~1回退到暂存区Index
git reset --hard? head~1本地清空

4、本地的修改push到远程仓库,如果失败则执行第5步 ?

5、git pull将远程仓库的修改拉取到本地,如果有冲突需要修改冲突。回到第三步?

6)修改commit描述或者临时增加commit修改

git commit --amend?

7)git整理操作

可能为实现某个功能,需要不断提交多次commit. 可以使用git rebase对多次提交的commit进行顺序整理

比如我想对这二次commit进行整理

^:表示前一个版本 ~:表示后一个版本

使用git commit rebase -i 弹出对话框

??

?:x 保存退出(?:wq是保存最后时间? :x 如果没有修改,按照最原始时间保存)

然后把弹出对话框的注释cmmiit给删除。

如果是n个commit修改,则需要使用n+1此git rebase --continue

8)git分支结构

一般开发者是处在feature分支或者bug分支?

主管处在master分支或者develop分支

使用git branch 创建分支,git checkout 切换分支(git checkou -b如果本地没有此分支则会创建该分支)

使用git push origin 将code推送到bug分支上(选择分支推送,不加origin默认是master),然后切换到master分支使用git merge将bug分支合并,继而使用git push origin master推送到远端

9)查看指定文件修改

git log --oneline filename ? # 显示文件的所有修改记录

git log –p filename ?# 显示所有commit的修改

git show commit-id filename ? # 显示某个commit里文件的修改

git diff commit-id filename ? # 显示与某个commit间所有的差异,commit-id可以替换成HEAD,比如HEAD~2

git diff commit-id1 commit-id2 ? # 显示两个commit所有的差异

10)处理临时事件stash

? $ git stash ? # 将工作区的修改保存到缓存区,默然取名为: ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ?WIP on <branch_name> : <latest_commit_id> <latest_commit_message> ? ? ? ? ?

$ git stash save <name> ? # 将工作区的修改保存到缓存区,且取名为name ? ? ? ? ?

$ git stash pop ? ?# 取出缓存区栈顶(即最近一次)的内容,并且会删除此次pop的内容 ? ? ?

$ git stash list ? # 查看缓存里所有存储的修改 ? ? ? ? ?

$ git stash apply stash@{X} # ?取出stash里的内容,X为序号,但是不会删除stash@{X} ? ?

$ git stash drop stash@{X} ?# 删除stash@{X} ? ? ? ? ?

$ git stash clear ? ?# 删除缓存区里所有的记录

11)指定不需要git管理的文件

.gitignore可以提交到远程仓库中,这样这些规则就可以共享给所有的开发人员了,在.gitignore文件中每一行都定义了忽略 的规则

*.[oa] ? ?

*~ ?

? 第一行就是表示忽略所有的以.o或者.a结尾的文件,

第二行表示忽略所有的以“~”结尾的文件。

12)标签

可以使用git tag去创建一些标签,标识版本的对应的代码。tag分两种,一种是轻量级的,一种是含注解的标签:

git tag v0.10.15 ? ? ?

git tag v0.10.13 612931c0f ? ? ?

git tag –a v0.10.9 ? ? –m “bumped version to 0.10.9” 89de7802

git tag ? # 列举所有的tag

git show v0.10.13 ? # 查看v0.10.13的内容

git push origin tag_name ? # 推送tag到远程服务器

git push origin --tags ? # 推送所有的tag到远程服务器

git checkout tag_name ? # 检出tag的代码 ? ? ?

?git tag –d tag_name ? ?# 删除tag ? ? ?

?git push origin :refs/tags/tag_name ? # 删除远程tag

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 11:04:10  更:2022-08-06 11:04:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:53:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码