在初步看完 pro git
后,很被 git 的分布式仓库设计吸引,决定试用一下git,并将lite-ext
迁移到git-hub
上。
一点介绍@slideshare
列一下原先使用svn的不便之处:
1.从来没有用过svn的分支功能,因为一直听说svn分支实为代码copy,速度很慢,而且分支都会在服务器上建立,则一直都在主线上开发,而有些实验功能以及bug修正都不敢轻易提交,这样的话就丧失了版本控制的功能,常常将代码搞得一塌糊涂后只能全部删掉,重新check out了,中间的历史常常没有记录。
2.当连接网络不方便时自然也就丧失了版本控制的功能,因为每次commit都是要连到网上的。
而使用git后,可以有效解决上述问题
1.有些自己试验功能以及bug修正,可以采用本地分支,则在本地分支上commit可以保留代码版本记录的同时,在完全搞好后合并到主线上再push到服务器上,也避免了服务器上分支的建立。以及
利用 git commit --amend 将这次的修改 undo 上次commit
利用 git reset (file) 将已经stage(缓存)的文件恢复为未stage状态
利用 git checkout -- (file) 将修改过的文件恢复为未修改前内容(破坏性不可复原操作)
2.当没有网络连接时,可以在本地进行commit操作,当有网络连接时可以使用push和服务器同步即可。
3.可以方便快速的查看log信息,不必每次都连接到网络。
总之,这一切都是拜git分布的版本控制仓库所赐,每个客户端都有完整的版本控制仓库。
ps 中文文件名注意:
如果有文件为中文文件名可要注意了,windows下的中文文件名以 gbk 编码,则上传到 github 服务后,可以浏览器查看变为乱码(linux下clone后也为乱码文件名),可见github服务器应为linux系统(文件名为utf-8编码),所以不建议用中文文件名。
ps2 换行符注意
:
在 window 下使用 msysgit 时默认 core.autocrlf
为 true,那么直接使用 git 客户端的话没有问题,github上都是lf存储,但是如果使用了 idea 等 git 的插件,而没有注意 idea 的格式转换提示,那么就可能和使用git客户端的其他人产生冲突:
idea 的换行转换提示设置:
pro git阅读笔记
git 为dvs,不是cvs,分布式的版本控制,每个client都有完整的仓库。
git 中文件状态 tracked(clone初始状态,或通过git commit), modified(通过修改添加), staged(缓
存,通过git add命令),比传统多了staged这个状态。
没有区分明确的 git server ,只不过是多个个人 git 仓库的公共媒介,永远在线。
传输协议:git , http/https ,SSH (需要生成公钥私钥),gitosis很方便的可以配置,可以通过git提交
配置文件管理。
git 大大强化了分支的功能,不同于以往分支建立很麻烦很耗资源而往往不创建分支结果垃圾代码提交到
主线上去,git很轻量级的创建分支(指向commit的指针),鼓励多创建分支,在分支上进行新功能以及
bug的解决,最后才合并到 master 分支上去。
git 为三路合并,两个合并branch的最小公共祖先为base,将两个branch合并到上面去并生成新的commit
,如果同一行两个branch有不同的数据,则提示用户手动合并。
分支历史可以通过 git gui 中 版本库->图是所有分支历史 来查看
利用 git push remote-name local-branch:remote-branch 将本地分支 local-branch 推到 remate-name
的remote-branch上面去,省略 remote-branch时,remote-branch=local-branch,
省略 local-branch时,为删除remote-name的remote-branch分支。
注意push前首先要
git checkout local-branch
git fetch remote-name
git merge remote-name/remote-branch
更新当前的分支
利用track branch简化分支操作,git checkout-b local-branch remote-name/remote-branch
以后在 git checkout local-branch 后,可以利用
git pull 更新分支
git push 提交分支
git 内部实现:只要拷贝.git目录即可。以key-value为基础的内容管理系统
.git/objects 所有文件,目录(tree)以及tag,commit的内容都在此,sha索引,文件名保留在tree中
.git/objects/pack 通过git gc手动或不定期自动将原先的每个版本文件都重新存储
改变为存储一个完整的版本,其后版本都增量存储。
.git/refs 指向sha索引的指针文件,分支与tag本质都是指针文件指向commit(文件内容为commit sha)
,
分支指针文件内容经常变化,tag指针文件从不变化。
.git/HEAD 二级指针文件,指向其他指针文件,表明当前所在分支的最后提交
- 大小: 8.3 KB
- 大小: 46 KB
分享到:
相关推荐
【描述】:“只需几个问题和(希望是正确的)答案即可试用 git 和 reveal.js”这句话表明,这个项目设计了一种互动的方式,通过解答问题来学习和实践这两个工具。这种方式通常比传统的阅读文档更有趣,也更有助于...
Git 是一个分布式版本控制系统,广泛应用于软件开发领域,用于跟踪对项目文件的修改。"git-demo" 提供了一个实践 Git 命令的环境,它是一个测试存储库,旨在帮助用户熟悉 Git 的基本操作。 在 Git 中,"存储库"...
Git原理与使用.pdf是关于Git版本控制系统的课程目标,旨在掌握Git企业级应用,深刻理解Git操作过程与操作原理,理解工作区、暂存区、版本库的含义。 技术目标: 1. 掌握Git版本管理,自由进行版本回退、撤销、...
Git是一款非常强大的分布式版本控制系统,它的主要作用是帮助开发者更高效地进行代码管理、协作开发、版本控制等工作。对于大型项目而言,多人协作是开发过程中的常态,Git作为一个先进的版本控制工具,能够很好地...
预览版通常会在正式版发布之前,让开发者和早期采用者试用,以收集反馈并进行最后的调整。 了解和熟练使用Git对于现代软件开发至关重要,包括基本概念如仓库(repository)、工作区(working directory)、暂存区...
测试AV git日志(Dessutom mixade作者... delvis i detta repo,delvis var gitbash标签全局gitconfig? $ git config --global user.namne每$ git config user。电子邮件 ===全局配置$ git config --show-scope --...
- **bcompare**提供30天免费试用,到期后可通过命令`rm -rf ~/.beyondcompare`重置试用期。 - **meld**则是完全免费的工具。 #### 图形化工具配置步骤 - **步骤一:配置external diff工具** - 创建脚本文件`git-...
"Beyond Compare-Trial-WM.exe"是Beyond Compare的试用版,这是一款强大的文件和目录比较工具,常被用来辅助解决Git的合并冲突。"SourceTreeSetup-2.1.2.5.exe"是SourceTree的安装程序,SourceTree是一个图形化的Git...
描述中提到的“试用Git和GitHub”则意味着这个项目还涉及版本控制和代码协作的实践。 1. **Python**: 作为标签出现的"Python",是指一种高级编程语言,以其简洁明了的语法和强大的功能而广受欢迎。Python常用于Web...
标题中的“Trial:使用一些试用 pgms 检查 Git”表明这是一个关于试用不同程序(pgms,可能是程序或工具的缩写)来测试和理解Git版本控制系统的实践教程。Git是分布式版本控制系统,广泛用于软件开发,尤其是Java项目...
gitkraken gitkraken4 gitkrake6以下 git客户端 git 。 git客户端免费试用,记住试用时不要更新 6以下的版本都是免费的 修改host 127.0.0.1 release.gitkraken.com api.gitkraken.com 就不会自动更新了
使用此URL上的“ Kali 2018.2”映像在干净的VM中完成了试用安装: 对于其他版本或操作系统,您的里程会有所不同。先决条件:OS软件包Kali 2018.2出厂时没有python3的pip,因此您需要安装: apt-get install python3...
【描述】"PHP试用 git remote add origin :aysunkarahan / PHP trial.git" 这句话是Git命令,用于将本地仓库关联到一个远程仓库。在GitHub等版本控制系统中,`git remote add origin`命令用来添加一个远程仓库的URL...
要试用此示例,请克隆项目并添加测试提交,系统将提示您发布。 在您自己的项目中,安装和 : npm install --save-dev surge git-scripts 接下来,在您的package.json ,添加您想要运行 npm 任务的 git 钩子。 ...
Gitea - Git with a cup of tea 目标Gitea的首要目标是创建一个极易安装,运行非常快速,安装和使用体验良好的自建 Git 服务。我们采用Go作为后端语言,这使我们只要生成一个可执行程序即可。并且他还支持跨平台,...
8. **版本控制集成**:与常见的版本控制系统如SVN、Git等集成,便于版本管理和代码协同。 总的来说,PLSQL Developer是Oracle数据库开发者不可或缺的工具,它简化了PL/SQL编程和数据库管理的工作,提高了开发效率。...
内容概要:webpack 做过哪些优化,开发效率方面、打包策略方面等、优化 Webpack 的构建速度、优化 Webpack 的打包体积、speed-measure-webpack-plugin、Babel 的编译过程、Git 常用命令、如何使用Git管理项目、项目...
5. **寻找替代方案**:在某些情况下,可能有更适合当前需求的替代工具,比如使用Visual Studio Code这样的轻量级编辑器,结合Git进行版本控制,以及使用在线编译器或云IDE服务。 总的来说,解除180天试用虽然可能...