1.版本控制
版本控制(Version Control System)目前主要分两大流派。
1.1集中化
集中化的版本控制系统( Centralized Version Control Systems,简称 CVCS )代表产品有cvs、Subversion等。它们都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
其中,最明显的缺点是中央服务器的单点故障
1.2分布式
分布式版本控制系统( Distributed Version Control System,简称 DVCS )代表产品有Git,Mercurial等,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜 像出来的本地仓库恢复。
2.git原理
2.1理解代码的位置
通常情况下,在分布式版本控制中,代码存放在三个重要的位置:远程仓库(Remote)、本地仓库(Local)和当前工作空间(workspace)。
暂存区(index)本质是个数据结构,维护指向不同的文件版本的索引,只有在该空间建立索引,才能跟踪文件的状态,一般都放在 Git 目录中。
zhangweikuang@xb:~/code/ahc$ ls .git COMMIT_EDITMSG ORIG_HEAD description info packed-refs FETCH_HEAD branches hooks logs refs HEAD config index objects
2.2理解git文件状态
对应的,git文件有4种状态:
- Untracked状态: 未跟踪。 通过*git add*,*git commit*可将它置入跟踪状态。
- Unmodified:已经在库中,未修改,即版本库中的文件快照内容与文件夹中完全一致。这种类型的文件有两个去处,如果它被修改,而成为modified;如果使用*git rm*移出版本库,则成为untracked文件。
- Modified状态: 文件已修改,仅仅是修改,并没有进行其它操作。这个文件也有两个去处,通过 git add 可进入暂存(staged)状态,使用 git checkout -- fileName 则丢弃修改,返因到unmodify状态。这个checkout很好理解,就是取出库中文件,覆盖当前文件。
- Staged状态:暂存状态,有的资料里叫index状态,即为指定文件建立版本跟踪(索引)信息。执行 *git commit 则将修改同步到库中,这时库中的文件与本地文件又一致了,于是文件是unmodify状态。执行 git reset HEAD filename 取消暂存(其实质是用仓库中某个版本库的fileneme覆盖当前Staged内的同名filename文件),文件状态变为modified。
3.git 最常用命令
3.1正常流程
几个人协调完成一次需求的开发,最常用命令如下:
1.下载代码
git clone git://github.com/xxx/xxx.git
2.切换分支
git checkout -b branchName
导入ide进行开发
3.查看修改
git status
4.提交到暂存区(index)
git add xxx git add -A
5.提交到本地仓库(Local Repository)
git commit -m '修改备注内容'
6.提交到远程仓库
先更新:git pull origin branchName 再提交:git push origin branchName
3.2注意点
以上的流程是比较顺利的流程,下面再提几个注意点:
1.步骤4和5可以合并,简化为
git commit -a -m '修改备注内容'
2.提交改动时,忽略某些文件
给一个示例,需要手动编辑.gitignore文件
zhangweikuang@xb:~/code/moon$ cat .gitignore # Java class files *.class # Eclipse project files .classpath .project # Intellij project files *.iml *.ipr *.iws .idea/ # War target/
3.步骤5如果不想提交,可以移除部分文件
git rm xxx
4.查看提交历史
git log
5.取消已暂存的文件
git reset HEAD yyy
note:
以上只是给出了个人在使用git过程中常用的一些命令。
4.参考资料
Git详解之一 Git起步 - http://www.open-open.com/lib/view/open1328069609436.html
等
相关推荐
Git是一种分布式的版本控制系统,它...整体来看,这本书是学习Git必备的全面指南,涵盖了从基础到高级的各种Git用法,同时特别关注了GitHub这一重要平台,为希望掌握现代版本控制技能的开发者提供了宝贵的知识和技巧。
Git是一款目前广泛使用的版本控制系统,它主要用于管理软件开发过程中的代码版本。学习Git,可以帮助我们更有效地进行代码版本控制,提高开发效率。 Git的起源: Git最初由Linux的创始人Linus Torvalds在2005年创建...
### Git 最全笔记整理——Git 入门必备 #### 一、Git 是什么? Git 是一种分布式版本控制系统,主要用于跟踪计算机文件的更改,并协调多个用户之间的协作。它最初由 Linus Torvalds 在 2005 年为了更好地管理 ...
总之,Git是开发者必备的工具,它强大的版本控制功能可以帮助团队有效地管理代码,跟踪变更,解决冲突,并确保代码的安全。通过下载官方的Windows 64位Git安装包,用户可以快速地在Windows环境中搭建Git工作环境,...
Git是一种分布式版本控制系统,它允许开发人员协作管理代码库,跟踪文件和目录的变化...掌握Git的客户端和服务端操作,以及如何通过`git clone`命令获取和同步远程仓库,对于任何参与软件开发的人员来说都是必备技能。
Git是一种分布式版本控制系统,用于管理软件开发项目的源代码和版本控制。它是由林纳斯·托瓦兹(Linus Torvalds)于2005年开发的,最初是为了管理Linux内核的开发而创建的。Git具有以下特点: 1. 分布式管理:每个...
JAE京东云引擎已经可以使用Git来上传管理代码文件了,但是官方的Git帮助文档真心不敢“恭维”——复制了一连串的“百科知识”,然后就……完了。对比一下百度BAE的Git操作教程——图文并茂,又生动形象,不得不想问...
Git是世界上最流行的分布式版本控制系统,它由Linus Torvalds为Linux内核开发而创建,如今已被广泛应用于各种软件开发项目。Git-2.36.1-64-bit.exe是...无论是新手还是经验丰富的开发者,Git都是管理源代码的必备工具。
总之,配置和使用Git是每个开发者必备的技能,而RT-Thread Studio的内置Git插件为STM开发提供了便利。通过学习和掌握Git,不仅可以提升个人工作效率,还能更好地协同团队,确保项目的顺利进行。
了解和熟练使用Git是现代软件开发者的必备技能。通过实践和学习,你可以掌握Git的强大功能,提高团队协作效率,确保代码的安全和版本控制。在实际项目中,理解Git的工作流程、合理使用分支策略(如Git Flow或GitHub ...
Git是世界上最流行的分布式版本控制系统,它允许开发人员...无论是个人项目还是团队协作,掌握Git的基本操作和高级特性都是每个开发者必备的技能。定期更新到最新版本,不仅可以利用新功能,还能确保安全性和兼容性。
总之,Git 2.18 for Windows x64是开发者必备的工具之一,无论你是初学者还是资深开发者,都能从中受益。通过下载这个压缩包,你可以快速获取到Git的最新版本,节省下载时间,提高工作效率。在使用过程中,不断探索...
当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。 GitHack是一个.git泄露利用测试脚本,通过泄露的文件,还原重建工程源代码...
Git是世界上最流行的分布式版本控制系统,它为软件开发...了解并熟练掌握Git的使用,设置和管理SSH密钥,是现代软件开发者的必备技能。通过持续学习和实践,开发者可以充分利用Git的强大功能,提高项目的质量和效率。
在CentOS 7环境中安装Git是许多开发人员和系统管理员的必备技能之一。通过本文档,我们将详细介绍如何在CentOS 7系统上安装Git,包括从下载源码包到完成安装的整个过程,并对关键步骤进行深入解析。 #### 二、准备...
学习git的直通车,git入门必备。
本章介绍开始使用Git前的相关知识。我们会先了解一些版本控制工具的历史背景,然后试着让Git在你的系统上跑起来,直到最后配置好,可以正常开始开发工作。读完本章,你就会明白为什么Git会如此流行,为什么你应该...
Git 是一款分布式版本控制系统,对于软件测试工程师而言,掌握 Git 命令是必不可少的技能。这份资料提供了软件测试工程师需要了解和使用的 Git 命令的精选完整版,旨在帮助测试工程师提升日常工作中与代码版本控制...
Git是开源的分布式版本控制系统,由Linux内核的创造者Linus Torvalds设计,用于高效地处理从小到大的项目版本管理。Git的核心优势之一是它的分布式特性,开发者可以在本地进行提交,无需直接连接到中央服务器。每个...