转载:请注明http://blog.youkuaiyun.com/gcc_sky
本文主要为Git新手介绍Git的命令操作,以及emacs编辑代码过程中使用magit管理代码。
也许你正在为以下问题而烦恼:
每个项目工程代码以单独目录存在于本地,队友们想共享代码,必须到对方目录下进行拷贝,变化的路径名难免带来不便;
半个钟前,哪些代码被修改了?你记性没那么好;
每次为了bug修复或新功能开发,不得不另拷贝原工程;修改完还要进行手动diff并合并;
。。。。。。。。。。。可能还有更多烦人问题!
Git是一款分布式版本控制/软件配置管理软件。与CVS、Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。Git的速度很快,这对于诸如Linux kernel这样的大项目来说自然很重要。Git最为出色的是它的合并追踪(merge tracing)能力。
实际上内核开发团队决定开始开发和使用Git来作为内核开发的版本控制系统的时候,世界开源社群的反对声音不少,最大的理由是Git太艰涩难懂,从Git的内部工作机制来说,的确是这样。但是随着开发的深入,Git的正常使用都由一些友善的命令稿来执行,使Git变得非常好用。
Git工作流程
代码仓库的管理,即管理四棵“Tree”,远程仓库(remote repository)、本地仓库(HEAD/local repository)、缓冲区(INDEX/stage)、本地目录(Local directory)。
严格来说,管理的三棵树:仓库、缓冲区、本地目录;使用频繁的基本操作:
检出仓库:git clone <server:/repository>
跟踪文件:git add <filename>,添加至缓存区
取消跟踪文件:git rm --cached <filename>
提交:git commit -m "代码提交信息",提交到本地仓库(Local repository)
删除文件:git rm <filename>,取消HEAD的提交,并将本地文件置为“Stage:delete”状态
检出文件:git checkout <filename>,使用最新的提交覆盖目标文件
rollback:git reset --soft <commit>,保持当前文件修改的状态,版本rollback至commit版本
&nb