美文网首页程序员
git 快速入门

git 快速入门

作者: 师照照 | 来源:发表于2018-05-14 10:52 被阅读94次

    这篇文章写的是我对git基本概念的理解,不涉及具体的命令行操作。希望能帮助到那些想要理解git工作原理的人。

    具体的操作命令以及更详细具体高端的内容都在文末的参考资料里。

    代码仓库

    你有一个相册,相册里的照片有你百天、幼儿园、结婚后的样子。在每个值得纪念的时刻,你都拍下一张照片,放在相册里。翻开相册,那些定格的时光在你眼前重现。

    代码仓库就是项目的成长相册,每一次提交就相当于把项目文件的当前状态拍成照片放进相册里,即代码仓库保存的是不同时刻的项目文件的快照。在这个仓库里,你可以像翻看老照片那样,查看很久之前的文件内容。我刚开始使用git的时候,总是担心当把代码恢复到以前的版本时,在此版本之后修改后的内容就会丢失掉,这种担心是完全多余的。就像当你翻看以前的照片,在此之后的照片是不会消失的。

    你可以任意查看代码仓库中的版本。

    提交

    只有在代码仓库中的快照才能被恢复,而将文件快照加入代码仓库的操作称为提交。在git中,当前文件状态有三个状态,1 未跟踪, 2 已修改 3 已暂存。未跟踪的文件是没有加入版本控制系统,无论你做什么操作,git都视而不见。执行add 可以将文件纳入版本控制。如果文件处于跟踪状态,当你修改了文件内容,这时候文件状态处于已修改状态。但是,处于修改状态的文件是不能提交的,只有通过git add 将文件已修改状态变为已暂存,才能提交。

    只有处于暂存状态的文件才能被提交。如果你对文件做了修改,并通过git add将文件状态变为以暂存,接下来在此基础上你又修改了文件,此时文件又处于已修改状态,这时进行提交操作,只有暂存的内容会被提交,即提交的内容只有第一次修改的内容,第二次的修改将被丢弃。

    分支

    提交到仓库里的快照是怎么组织的呢?git使用分支来组织文件快照。

    想像一个用线穿珠子的场景。你拿起一个珠子,让线头穿过珠子上的孔,然后珠子一个个穿在一起。git仓库中维持一个header指针,用来指向当前快照。如果把提交的快照比作珠子,那么线头就是此时header指针位置,线就是分支。当提交成功后,header自动指向最新提交的快照。git可以使用branch命令创建一个新的分支,此时header仍指向原分支,header所指向的快照是新分支的开始。如果使用git checkout 将header移动新的分支后,那么之后的提交的快照都被串在新分支这条线上。如果不把header指针移动到新分析,新提交并入原分支。

    一个分支相当于一个支线任务,在分支上,我们可以做一些探索,而不用担心新写的代码摧毁已有的功能。当开发产品时,有时需要进行AB测试,即发布两个不同的版本,然后根据反馈挑选出效果更好的版本作为最终版本。这时,新建AB两个分支将功能实现发布两个测试版,假设反馈结果是A比B好。此时切回稳定分支,将A分支合并到稳定分支,删除B分支,这样就完成了一次版本迭代。

    分支合并

    上节提到分支合并,在git中,每次只能合并两条分支。想象一下,分支合并就相当于把两条线的最末端打个结绑在一起,变成一条线。在合并的过程中,可能会出现文件的同一个内容在两个分支做了不同的改动,这时候就会产生冲突。git会提示显示出冲突的不同内容,这时需要手动打开文件,保留一个版本,删掉另一个,再次合并就可以了,

    远程仓库

    远程仓库类似于云端相册,在本地修改之后,可以同步到云上。当云上的数据有变动的时候,我们也可以根据云端数据对本地数据进行更新。

    首先在github上建立一个空仓库,这个仓库内不包含任何文件。
    通过git remote add 仓库名称 远程仓库地址 为本地仓库远程仓库。紧接着使用git push 将本地更新推动到远程仓库,使用git pull将远程仓库的变化更新到本地仓库中。在进行git push时,可以通过https或者ssh的方式提交代码。如果通过https方式生成代码,则每次push都需要重新输入用户名和密码

    github官方生成新的sshkey,并把它添加到ssh-agent中的教程。

    至此,如果你掌握了以上内容,你就可以使用git。如果遇到新的问题,建议使用git —help来查看相关内容。

    如果你有什么想说的,请留言给我。爱你们。

    参考资料

    1. git官方中文文档
    2. 将本地仓库上传到github

    相关文章

      网友评论

        本文标题:git 快速入门

        本文链接:https://www.haomeiwen.com/subject/tueddftx.html