惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
博客园_首页
Forbes - Security
Forbes - Security
WordPress大学
WordPress大学
P
Proofpoint News Feed
T
Threat Research - Cisco Blogs
L
LINUX DO - 热门话题
L
Lohrmann on Cybersecurity
Spread Privacy
Spread Privacy
D
Darknet – Hacking Tools, Hacker News & Cyber Security
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
P
Privacy International News Feed
A
About on SuperTechFans
T
Tailwind CSS Blog
I
InfoQ
S
Securelist
云风的 BLOG
云风的 BLOG
罗磊的独立博客
Recent Announcements
Recent Announcements
T
The Exploit Database - CXSecurity.com
B
Blog RSS Feed
V
Visual Studio Blog
Know Your Adversary
Know Your Adversary
The GitHub Blog
The GitHub Blog
Jina AI
Jina AI
腾讯CDC
Cyberwarzone
Cyberwarzone
有赞技术团队
有赞技术团队
AWS News Blog
AWS News Blog
博客园 - 【当耐特】
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
F
Full Disclosure
S
Secure Thoughts
博客园 - 司徒正美
J
Java Code Geeks
Y
Y Combinator Blog
Google Online Security Blog
Google Online Security Blog
GbyAI
GbyAI
N
News and Events Feed by Topic
Help Net Security
Help Net Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Project Zero
Project Zero
T
Tenable Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Tor Project blog
MyScale Blog
MyScale Blog
Scott Helme
Scott Helme
小众软件
小众软件
K
Kaspersky official blog

远飞闲记

用 OpenClaw 搭建全自动晨间简报系统 Open Claw(🦞龙虾): 新手最常踩的 8 个坑,我帮你踩过了 什么是AI Agent(智能体)? OpenClaw 在微信端使用指南 如何让OpenClaw🦞更好用-调教篇 OpenClaw(龙虾🦞)自主赚钱实验笔记 本地Qwen+云模型:OpenClaw真实体验 AI博客主题开发记 OpenClaw初试记 十年博客路:在AI水文泛滥的时代,为何还在坚守? AI Coding实战吐槽:别被"400刀大神"带偏,这些坑我帮你踩过了! 《相信》把不可能变为可能 我们写的程序被杀毒软件杀了,杀毒软件到底杀了什么? 👋2024 探索Unity单元测试:构建可靠游戏代码的基石 实用小黄鸭调试法 炸裂的Unity割韭菜这事 还是要有信念 您好2023 Docker启动提示虚拟化失败 Golang中配置文件热重载方案 重置博客主题 双链知识管理及logseq使用体验 魔幻的魔都疫情 漫谈国内NFT市场状况 如何在UE4中平衡蓝图与C++的使用 2021时光荏苒,2022可遇可期 UE4(Unreal Engine)本地化资源功能 摈弃:“拥有更多=做的更好的”的观念 鱿鱼游戏 研究UE4(虚幻引擎)后的感想 初试Caddy WebServer GitHub Copilot AI编程的感受 Mac Mini M1真香定律 地震提醒App 共和国失去两大功勋 币圈还好吗? Headless CMS 倒牛奶事件 “鸡娃”现象的观点 2020年新冠期间记录 社区团购团长的入门到放弃 路由折腾记 多电脑鼠键共享方案 Typescript循环引用 Circular Referenec 问题解决方法 《高效清单工作法:聪明人的无压时间管理手册》 Crossword Puzzles Privacy ShareTheCookies Privacy 七月的最后一天 游戏开发中使用的概率算法 笔直站立昂首挺胸的生活态度 Android和H5网游加速器解决方案的探索 Golang基础配置和Go Emacs开发环境的配置 使用Github Actions自动发布Hugo Blog配置 《青年到此为止》读书随笔 逛T推遇见比较有意思的事 GnuGPG Git中的使用及配置 《极简主义:活出生命的真意》阅读记录 疫情记录:热干面出院了 如何有效的阅读一本书:葱鲔火锅式笔记读书法 《麦肯锡精英高效阅读法》读书笔记 2020四年之约 疫情记闻 2020-二月二龙抬头 任天堂(Nintendo)switch NS游戏机 真香 MacBook Pro SSD 512G硬盘升级记 构建Facebook Instant Game本地测试环境 今日有感 Bye 2019,Hi 2020 猎魔人-The Witcher 如何判断是否适合加入创业团队 开发人员业余项目版权的见解 容易改变想法的人 及时止损 VSCode中远程调试NodeJS配置 Android Google Play 内购服务器订单校验 做产品是否要蹭热度 为什么会接入Google Adsense 成功和产品体验的一点想法 共享经济下的牺牲品们 折腰的梯子们 Emacs配置:Unity项目开发配置 人人都想当管理者 对焦虑和迷茫的理解 TypeScript强类型判断引发的问题 找回习惯和中产与爱好 程序员的成长之路 产品、技术、团队 爱心被滥用 工作996.生病ICU 2019初一记事 忆上海,换一种生活方式 记一次地震时的感受 押金是什么 Egret Jenkins搭建构建环境中遇见的坑 去年的总结 要懂的感恩 阿里云OSS+docker Owncloud安装 从修建房子来说开发过程的问题和流程 小记录 与人方便,与己方便
Git学习笔记
2014-05-14 · via 远飞闲记

以前的项目都是使用的SVN,也了解一点点GIT的使用但没有系统的去学习过它的使用.最近有时间在近两天系统的学习了下Git Pro这本书的内容并更进一步的加强了我对git的了解和使用的技巧.

什么是版本控制?

版本控制是一种记录一个或者若干文件内容变化,在将来某天我希望查看其特定版本修订的系统.

版本控制系统的分类:

本地版本控制系统:

就是对文件改成不同的名字进行备份,优点简单,缺点时混淆在一个文件夹内一旦弄错不容易恢复.有rcs

集中式版本控制系统

集中式版本控制系统((Centralized Version Control Systems,简称 CVCS)),单一服务器集中管理所有文件的修订版本,协同工作的人通过客户端取出最新版本进行提交更新.其中Subversion(SVN)、CVS及Perforce等系统,优点能查看其他人对文件做了什么,管理员能对客户端进行权限的分配.缺点:都在同一个服务器上维护代码,如果服务器宕机一小时那么谁也无法提交更新.最坏的情况时如果服务器文件丢失那么谁也不能保证客户端代码时最新的.

分布式版本控制系统

        客户端并不是提取最新版本文件的快照,而时把整个仓库镜像到了本地.优点就是任何一个协同工作的服务器发生故障,事后都能从任何一个镜像出来本地仓库恢复. 目前的系统有Git、Mercurial、Bazaae、Darcs等

为什么要使用版本控制工具?

  • 在将来某天可以查看以前版本修订的内容
  • 在工作时误操作删除文件后不需要抓狂,可以快速的恢复文件。
  • 在多人协作工作时不会因为自己的改动而替换别人的更动.

GIT的工作原理

git时记录的时更改的快照,每次提交更新会遍历一遍所有的文件的指纹信息作一快照,然后保存一个指向这一快照的索引,如文件未变化则不会保存而只对上一次保存的快照作一链接.

所有操作都是本地完成的不要联网操作。

在保存到git之前,对所有数据都要进行内容的校验和计算并将此结果作为数据的唯一标识和索引.所有保存在git中的内容都是通过一个SHA-1算法计算出的校验和.

常用的git操作大多仅仅是把数据添加到数据库

文件的三种状态: 已修改:对已经从git目录中取出的文件进行过修改 已暂存:对修改的文件放在下次提交的时要保存的清单中 已提交:标识该文件已经安全的保存在本地的数据库中了.

所有文件的元数据和对象数据库都保存在.git文件夹中,从项目取出某个版本的文件和目录用以后续的工作叫做工作空间,暂存区域只不过是个简单的文件保存快照的索引放在.git中

GIT工作流程:

  1. 在工作目录中对某些文件修改
  2. 对修改后的文件进行快照,然后保存在暂存区域
  3. 提交更新,将保存到暂存区域的文件快照永久的转储到git目录中  

Git的安装

Liunx: Fedora: $yun install git-core Ubuntu: $apt-get install git

Mac OS: 通过homebrew安装:  $brew install git MacPorts: $sudo prot install git-core+svn+doc+bash_completion+gitweb  图形化方式安装:

Window:   msysGit


Git 配置

用户信息 $git config –global user.name “名字” $git config –global user.email 电子邮件地址

文本编辑器 $git config –global core.editor 编辑器名

差异性分析工具 $git config –global merge.tool 工具名(vimdiff) Git 可以理解 kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,和 opendiff 等合并工具的输出信息

查看配置信息 git config –list 查看特定的信息: $git config user.name


GIT基础

从工作空间初始化新仓库: git init 从现有仓库克隆:git clone   仓库地址 检查当前文件状态: git status 跟踪新文件:git add 提交更新: git commit -a(不需要对修改进行add操作) -m “说明” 忽略某些文件:在目录下创建一个.gitrgnore文件,其中加排除版本更新文件.文件内容可以使用glob模式匹配 查看已暂存和未暂存的更新:git diff –cached(查看暂存起来文件的变化) 移除文件:git rm 可选 -f(强制移除文件) 文件名 移动文件: git mv 文件名

查看提交历史 :git log 可选参数: -p(显示最近提交内容的差异) -2(显示最近两次更新) -word-diff(查看单次的变化) -stat 增改行数的统计 –pretty=oneline显示在一行 图形化查看提交历史工具: git gitk 撤销操作:git commit –amend 将文件全加到暂存区域: git add . 取消已经暂存的文件: git reset HEAD <file> 取消对文件的修改: git checkout – <文件名>

远程仓库

查看当前的远程库:git remote 可选参数 -v(显示对应的克隆地址) 添加到远程仓库: git remote add [shortname] [url] 抓取远程仓库的数据: git fetch [remote-name] 推送数据到远程仓库:git push [remote-name] [branch-name] 查看远程仓库的信息: git remote show [remote-name] 原始克隆的远端仓库中抓取数据合并到当前工作目录的分支中: git pull 远程仓库的删除和重命名:git remote rename 名字 新名字 删除对应的远端仓库: git remote rm 名字

标签

 显示已有标签: git tag  可选-l “1.4.*“显示1.4版本的所有标签 含附注的标签:git tag -a [tag_name] -m ‘注释’ 签署标签: git tag -s [tag_name] -m ‘注释’ 验证标签: git tag -v [tag_name] 后期加注标签: git tag -a [tag_name] 提交对象的校验和前几位 分享标签:git push [remote_name] [tag_name] 可选 –tags(一次性推所有标签)

别名: git config –global alias.别名 git命令


GIT分支

分支其实时某个对象往回看的历史,git创建分支实际保存的是一个校验和的文件很廉价很快速,就是向一个文件写拉41个字节(外加一个空白符),所有分支都是在本地仓库中操作

创建分支:git branch [branch_name] 切换分支: git checkout 可选-b(新建并切换到分支) 分支名 删除分支: git branch -d  -D(强制删除) [branch_name] 合并分支: git merge [branch_name] 浏览所有分支 :git branch 可选 -v(查看各分支最后一个提交) –merged(当前分支已经和哪些分支合并了) –no-merged(当前分支和哪些分支未合并) 获取远程分支: git fetch [remote_name]/[branch_name] 推送本地分支: git push [remote_name] [branch_name] 合并远程分支: git merge [remote_name]/[branch_name] 删除远程分支: git push [remote_name] :[branch_name] 跟踪远程分支: git checkout –track [remote_name]/[branch_name]

衍合(rebase)把一个分支里提交的改变移到另一个分支里重放一遍,更整洁的提交历史,使用目的想要得到一个能在远程分支上干净应用的补丁

git rebase [主分支] [特性分支] 衍合的风险: **一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作。 **如果把衍合当成一种在推送之前清理提交历史的手段,而且仅仅衍合那些尚未公开的提交对象,就没问题。如果衍合那些已经公开的提交对象,并且已经有人基于这些提交对象开展了后续开发工作的话,就会出现叫人沮丧的麻烦。