Git学习笔记
git的文件存储基本原理

git的文件存储基本原理Git是一种分布式版本控制系统,用于管理和跟踪文件的修改历史。
它的文件存储基本原理是通过使用哈希算法,将文件内容进行唯一标识,然后将这些标识存储在一个称为对象库的地方。
在Git中,每个文件被视为一个对象,每个对象都有一个唯一的哈希值来标识它。
这个哈希值是通过对文件内容进行SHA-1哈希算法计算得到的。
因为SHA-1算法的特性,即使文件内容只有微小的变化,其哈希值也会完全不同。
这样,每次对文件进行修改后,Git就能够通过比较哈希值来判断文件是否有变化。
Git将每个文件对象存储在一个称为对象库的地方。
对象库是一个存储所有文件对象的地方,它可以位于本地计算机或远程服务器上。
对象库中的对象可以根据哈希值进行快速查找和访问。
当我们对文件进行修改后,Git会创建一个新的文件对象,并将其添加到对象库中。
这个新的文件对象会记录文件的新的哈希值、作者、修改时间等信息。
同时,Git还会创建一个称为提交对象的对象,用于记录这次修改的详细信息,如提交者、提交时间、提交消息等。
提交对象中也包含了指向这个新文件对象的指针,以便能够找到并检索到这个文件对象。
除了文件对象和提交对象,Git还有其他一些对象,如树对象和分支对象。
树对象用于组织文件对象,它类似于一个目录结构,可以将多个文件对象组织成一个树状结构。
分支对象用于标记一个特定的提交对象,以便能够轻松地访问和管理不同版本的文件。
通过使用这些对象,并根据它们之间的关系,Git能够有效地管理和跟踪文件的修改历史。
当我们需要查看文件的历史版本时,Git会根据提交对象之间的指针关系,依次遍历并检索相关的文件对象,然后将文件内容恢复到相应的版本。
这样,我们就能够轻松地查看文件的不同版本,并进行比较和回滚操作。
除了文件存储基本原理,Git还提供了许多其他功能,如分支管理、合并冲突解决、远程仓库同步等。
它的分布式特性使得多人协作更加方便,每个人都可以通过克隆仓库到本地来进行独立的开发和修改。
git总结1

git总结1升级了git版本,git clone 的时候报了如下的错误fatal: unable to access 'https:///open-falcon/falcon-plus.git/': SSL connect error百度了好久,试了好多⽅法,最后google到了解决⽅法,特记录下解决⽅法: yum update -y nss curl libcurlgerrit 上查找多个⽤户的提交status:merged project:android/qiku/frameworks branch:QCOM_8976pro_7.x_360OS (owner:yangbinhu OR owner:zengzhigang OR owner:dengweihua OR owner:wangfuquan)====================================================================================================虚拟硬盘MYDROID root ⽤户密码:zzgubuntu root ⽤户密码:123456虚拟机安装配置gerrit过程###################################################### [001] Install virtualbox and init virtual machine1. Install VirtualBox2. Double click MYDROID\MYDROID.vbox to start the VirtualMachine.!!Recommand: free space of your VBox disk is larger than 300G建议系统安装的⼀个虚拟机硬盘上,再创建⼀个虚拟机硬盘挂载到系统中⽤于存放数据。
git的基本命令

git的基本命令
Git 基本命令:
git init –初始化一个Git仓库
git config –设置Git的配置
git add –将文件添加到版本库
git commit –提交文件到版本库
git status –检查Git的当前状态
git log –显示有关提交的日志信息
git diff –查看提交之间的不同
git show –显示提交的详细信息
git remote –管理远程版本库
git checkout –切换分支或者回退版本
git reset –重置版本库到某个commit
git tag –加标签某个提交
git fetch –从远程仓库获取最新版本
git pull –从远程仓库获取最新版本并自动合并到当前git merge –合并分支到当前分支
git rebase –重新应用已存在的提交
git cherry-pick –选择提交放入当前分支
git blame –检查某行代码是谁提交的
git stash –把当前未完成的工作暂存起来
git revert –恢复版本库到某个commit
git clean - 移除未跟踪的文件
git archive –创建zip/tar文件。
git基本命令

4、版本库管理相关命令
命令 简要说明 git count-objects 显示松散对象的数量和磁盘占用 git filter-branch 版本库重构 git fsck 对象库完整性检查 git fsck-objects* 同义词,等同于 git fsck git gc 版本库存储优化 git index-pack 从打包文件创建对应的索引文件 git lost-found* 过时,请使用 git fsck –lost-found 命令 git pack-objects 从标准输入读入对象ID,打包到文件 git pack-redundant 查找多余的 pack 文件 git pack-refs 将引用打包到 .git/packed-refs 文件中 git prune 从对象库删除过期对象 git prune-packed 将已经打包的松散对象删除 git relink 为本地版本库中相同的对象建立硬连接 git repack 将版本库未打包的松散对象打包 git show-index 读取包的索引文件,显示打包文件中的内容 git unpack-objects 从打包文件释放文件 git verify-pack 校验对象库打包文件
Git学习文档

Git学习⽂档#########################################################Study Document for Git#########################################################Git 基础Git ⽂件的三种状态:已提交(committed)、已修改(modified)和已暂存(staged)。
Git ⼯作⽬录的状态:已跟踪和未跟踪。
已提交表⽰数据已经安全的保存在本地数据库中。
已修改表⽰修改了⽂件,但还没保存到数据库中。
已暂存表⽰对⼀个已修改⽂件的当前版本做了标记,使之包含在下次提交的快照中。
基本的 Git ⼯作流程如下:1. 在⼯作⽬录中修改⽂件。
2. 暂存⽂件,将⽂件的快照放⼊暂存区域。
3. 提交更新,找到暂存区域的⽂件,将快照永久性存储到 Git 仓库⽬录。
Git 语法设置 Git 的配置git config --listgit config --global ***git config --global user.email @.comgit helpgit help verbgit verb --help克隆远端仓库git clone url检查当前⽂件状态git status列出当前分⽀和⽂件的状态:已跟踪/未跟踪。
[***@*** deployment]$ git status# On branch master# Untracked files:# (use "git add <file>..." to include in what will be committed)## test.mdnothing added to commit but untracked files present (use "git add" to track)跟踪新⽂件git add file[***@*** deployment]$ git add test.md[***@*** deployment]$ git status# On branch master# Changes to be committed:# (use "git reset HEAD file..." to unstage)## new file: test.md#Changes to be committed: 已暂存状态。
Git学习笔记之(一)使用gitgui从github上下载代码

Git学习笔记之(⼀)使⽤gitgui从github上下载代码背景:⽬前⼀些开源代码均在 GitHub上管理的,包括⾃⼰写的代码也可以放在上⾯进⾏管理。
但问题是,当你换⼀台电脑,想要将你⾃⼰放在GitHub 上的代码⼯程下载下来的时候,会遇到各种问题,⽬前可以使⽤4种⼯具下载代码,可以使⽤两种不同的⽅式。
内容:1、使⽤ Git Gui 下载代码在官⽹下载 TortoiseGit 和 Git GUI for windows ,下载完成之后,进⾏安装。
图⼀在设定为 git 的⽬录中右键,打开 Git GUI 软件图⼆图三使⽤账号打开GitHub,同时打开⾃⼰的⼯程,在Clone or download 下拉之后,选择 use SSH,拷贝输⼊框中的内容到 Git GUI 界⾯中。
图四此时点击 Clone,会提⽰如下内容:此时应该是SSH-key没有⽣成,需要到 GitHub 上,打开settings ---> SSH and GPG keys ---> 点击右侧的 generating SSH keys,查看官⽅的介绍,如何⽣成SSH key。
⼤致步骤如下:(1) ⾸先检查服务器上否已经安装了 SSH key。
打开 Git Bash执⾏ ls -al ~/.ssh 命令,如下图可以看到以下列出了含有 SSH key的地⽅。
当列表⾥⾯没有数据的时候,此时需要⽣成⼀个新的 SSH key,并添加到 ssh-agent (见操作4)和 Git Hub(见操作3)中。
(2) ⽣成新的 SSH key打开 Git bash ⼯具执⾏ ssh-keygen -t rsa -b 4096 -C "your email@"(3) 将 SSH key添加到 GitHub上直接打开 id_rsa.pub⽂件;将其中的内容拷贝到 GitHub上(setting----> SSH and GPG keys )选择 New SSH key。
git常用语句

git常用语句
1. git init - 创建一个新的本地仓库
2. git clone [URL] - 克隆一个远程仓库到本地
3. git add [文件名] - 将文件添加到暂存区
4. git commit -m "提交信息" - 将暂存区的文件提交到本地仓库
5. git push origin [分支名] - 将本地仓库的文件推送到远程仓库
6. git pull origin [分支名] - 从远程仓库拉取最新的文件到本地仓库
7. git branch - 查看当前分支
8. git branch [分支名] - 创建一个新的分支
9. git checkout [分支名] - 切换到指定的分支
10. git merge [分支名] - 合并指定分支到当前分支
11. git status - 查看当前文件状态
12. git log - 查看提交历史
13. git remote add origin [远程仓库URL] - 添加远程仓库地址
14. git remote -v - 查看当前仓库关联的远程仓库地址
15. git diff - 查看当前文件与上次提交的差异
16. git reset [commit] - 撤销提交
17. git stash - 将当前修改的文件暂存起来
18. git stash pop - 恢复最近一次暂存的文件修改
19. git checkout -- [文件名] - 撤销对文件的修改
20. git remote update origin --prune - 清理远程仓库中已删除的分支信息。
git 原理

git 原理
Git是目前最流行的分布式版本控制系统,它的原理十分重要。
Git 的原理是把文件系统的每一次变化都记录下来,以便在任何时刻回滚到之前的状态,并跟踪文件的更改历史记录。
Git的工作原理是把文件系统中的每一个文件都看作一个对象,这些对象可以是一个文件或一个文件夹,每一个对象都有一个唯一的SHA-1哈希值。
当文件或文件夹改变时,Git会根据更改计算出一个新的哈希值,把新的哈希值作为对象的更新标识符,并将其记录在Git仓库中。
Git使用三个主要数据结构:提交对象,树对象和标签对象。
提交对象是Git仓库中最重要的部分,它记录了文件系统的每一次变化,包括改变的文件、作者信息和提交时间等。
树对象记录了文件系统的当前状态,它的每个节点都指向一个提交对象,标签对象指向特定的提交对象,以便在任何时候轻松找到特定的版本。
Git的安全性也很重要,Git的每个提交对象都有一个SHA-1哈希值,该哈希值可以防止文件系统中的任何不安全的更改。
此外,Git 还配备了像GPG签名这样的安全策略,可以确保每次提交只能由授权的开发者提交。
总之,Git的原理是把文件系统中的每一个文件都看作一个对象,
每一个对象都有一个唯一的SHA-1哈希值,这些哈希值可以防止文件系统中的任何不安全的更改,同时Git也使用了一些安全策略,来确保每次提交都是安全可靠的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本节先简单介绍Git的使用与操作, 然后再介绍TortoiseGit 的使用与操作.Git是SVN以后的新一代的版本控制系统/协议. 适合于大规模的开源软件多人协作的开发. 有一个总仓库(如GitHub,CSDN,OSchina等提供), 每个客户端都有一个本地仓库(这个本地仓库有点对应于SVN的服务端仓库), 以及一个可以看见的本地项目.让我们想想,至少需要有哪些功能.以GitHub为例,首先,必须得有一个线上仓库(Repository), 这首先得新建一个仓库.要创建仓库,必须得先注册账号. 请参考: 创建GitHub技术博客全攻略:/renfufei/article/details/37725057然后,登录GitHub, 在右上角找到New Repository 或者加号下拉按钮(+),点击进入新建仓库页面: https:///new, 如下图所示:依次填写仓库名,以及其他信息后,点击"Create repository" 按钮,即可创建一个在线仓库. 因为这个仓库是挂在你的账号下的,所以可以是任意合法的字符,只要和你的其他仓库不冲突即可.仓库创建成功后,就会进入仓库预览页面, 如下图所示:然后,我们可以点击右边的HTTPS 链接, 上方的文本框里面就显示了HTTPS 协议下的仓库访问地址, 可以点进去,全选,也可以点击右边的复制按钮复制到剪贴板. 例如,刚刚创建的项目访问路径是:https:///cncounter/LispGentleIntro.git是一个以https:// 开始,以 .git 结尾的URL,根据提示,叫做clone URL.好了,仓库创建完成,可以进入下一步了.如果你偏爱命令行,那么可以简单参考下这一小节. 否则,请往下翻,直接看TortoiseGit使用与操作2.1 克隆项目(clone ...)Win+R 快捷键打开运行对话框,输入cmd回车, 在cmd 中(其实在GitBash中也可以), cd 切换到存放git项目的目录, 如:[plain]view plain copy1.Microsoft Windows [版本 6.1.7601]2.版权所有 (c) 2009 Microsoft Corporation。
保留所有权利。
3.4.C:\Users\Administrator>F:5.6.F:\>cd GIT_ALL然后执行命令: git clone https:///cncounter/LispGentleIntro.git ,就会把项目克隆到当前目录下, 项目的目录名字默认为 LispGentleIntro.[plain]view plain copy1.F:\GIT_ALL>git clone https:///cncounter/LispGentleIntro.git2.Cloning into 'LispGentleIntro'...3.remote: Counting objects: 5, done.4.remote: Compressing objects: 100% (4/4), done.5.remote: Total 5 (delta 0), reused 0 (delta 0)6.Unpacking objects: 100% (5/5), done.7.Checking connectivity... done.命令行截图如下:2.2 提交项目(commit ...)然后可以cd切换到LispGentleIntro 目录, 新增或者修改某些文件.这里只是模拟一下操作. 实际情况可能是使用Eclipse 导入项目(不要拷贝,Copy...)进行一些编辑, 然后将当前目录下的所有有变动的文件告诉索引库,接着提交到本地仓库.[plain]view plain copy1.F:\GIT_ALL>cd LispGentleIntro2.3.F:\GIT_ALL\LispGentleIntro>echo some content >> cncounter.txt4.5.F:\GIT_ALL\LispGentleIntro>echo by cncounter >> README.md6.7.F:\GIT_ALL\LispGentleIntro>git add .8.9.F:\GIT_ALL\LispGentleIntro>git commit -m "add some info."10.[master 86d090f] add some info.11. 2 files changed, 4 insertions(+)12. create mode 100644 cncounter.txt提交到本地仓库有什么好处呢? 本地仓库就是一个版本管理库,我们在编写代码时,如果写错了,那么可能需要Ctrl+Z 来撤销,撤销撤销,如果很多,而且跨文件,就很麻烦,可能需要Copy文件什么的。
这时候本地仓库就很有用了. 修改到某个阶段,然后就提交到本地仓库. 可以有效防止丢失,方便回退. 而且,提交到本地仓库不会影响别人看到的内容(只有本机可见).2.3 推送项目(push ...)如果完成到一定程度,那么可以推送到远端在线仓库. 推送之前,请确保你已经设置了全局的和user.email, 如果没有设置,或者不想使用全局的信息,可以在当前项目下设置:[plain]view plain copy1.F:\GIT_ALL\LispGentleIntro>git config "renfufei"2.3.F:\GIT_ALL\LispGentleIntro>git config user.email "renfufei@"接着,可以执行推送(push), 推送就是将已经提交到本地仓库的那部分内容给推到远端在线仓库.(修改了,但没提交的那部分内容,不会被推送). 执行git push命令即可:[plain]view plain copy1.F:\GIT_ALL\LispGentleIntro>git pushername for 'https://': renfufei3.Password for 'https://renfufei@':4.Counting objects: 6, done.5.Delta compression using up to 8 threads.pressing objects: 100% (3/3), done.7.Writing objects: 100% (4/4), 402 bytes | 0 bytes/s, done.8.Total 4 (delta 1), reused 0 (delta 0)9.To https:///cncounter/LispGentleIntro.git10. e8c0fb1..6407079 master -> master在连接上远端服务器之后,会要求你输入用户名与密码. 其中,用户名是你注册GitHub时的账号,不是邮箱. 接着是密码,注意密码是没有回显的,也就是为了安全,不告诉你具体输入了几个字符,输入完成回车即可. 截图如下:好了,推送完成,这时候用浏览器打开在线仓库,看看内容是不是已经变了?2.4 拉取项目(pull ...)当然,如果多人协作, 或者多个客户端进行修改, 那么我们还要拉取(Pull ... )别人推送到在线仓库的内容下来。
大神们是不推荐使用pull 命令进行拉取的, 因为封装了细节(git pull == git fetch + git merge). 对于这群更喜欢用命令行的神们来说, 一切在掌控之中是一种强迫症!!!(开个玩笑, 其实项目成员复杂,约定不好以后, pull 确实会有很多问题,会坑人.)常规使用,我们执行git pull即可:[plain]view plain copy1.F:\GIT_ALL\LispGentleIntro>git pull2.Already up-to-date.当然,因为没有其他文件被修改,所以直接提示已经更新到最新. 常规操作就这些,需要注意的是,和使用SVN的好习惯一样,你在修改本地内容之前,最好先pull 一下,减少冲突的可能.使用Git命令有时候确实不怎么方便,特别是每次都要输入密码,如果配置SSH 的方式,又实在是很麻烦.(当然,必须使用Windows 神器才有方便友好的客户端图形界面啦!!!)安装tortoiseGit之前,我们需要先安装程序包,然后安装语言包(LanguagePack). 因为TortoiseGit 只是一个程序壳,必须依赖一个Git Core,也就是上一节我们安装的Git.Git安装与配置下载Git安装包0.TortoiseGit-1.8中文版与Git安装包: /download/renfufei/82046991.首先打开Git 的官方网站: /2.然后找到下载页面: /downloads3.找到Windows版本的下载页面: /download/win4.因为准备使用TortoiseGit做图形客户端,所以就不选择Git GUI 版本. 打开Windows的下载页面后,应该会自动弹出下载框,选择保存即可. 如果没有弹出,可以右键点击页面中的click here to download manually.,选择另存为即可.5.建议将下载好的软件安装包统一分类放到某个目录,如: E:\SOFT_N\Tools_ALL\Git_ALL, 方便以后查找使用.6.文件通过浏览器下载完成后,需要修改文件的锁定属性,特别是.zip文件和.chm文件(否则打开chm会显示404). 右键点击下载的文件,选择属性,然后点击"解除锁定"按钮,确定即可. 如下图所示:去除文件锁定(非必须)7.然后鼠标双击安装文件, 如果有Windows拦截警告,允许即可8.然后出现安装向导界面,点击下一步(Next)即可:安装向导界面9.接着出现授权信息界面,Next即可:授权信息界面10.选择安装路径11.选择文件关联,如果你不清楚,直接默认,下一步即可. 如果你想要右键菜单清爽一点,就把下图中的那个勾给去掉. 这里把所有勾去掉也是可以的,更清爽(我就是这么干的).12.接着出现开始菜单文件夹,默认,下一步即可:13.然后是是否配置Path的配置,选择中间一个,可以通过Windows命令行(CMD)调用git 命令。