美文网首页
Git笔记与思考一:基础概念

Git笔记与思考一:基础概念

作者: 囧书 | 来源:发表于2017-10-31 19:26 被阅读42次

    用户名和邮箱

    使用Git做版本控制时,其提交是基于用户行为的。Git为用户角色定义了两个基础属性:用户名和邮箱。
    你可以在当前操作系统下配置:

    git config --global user.name "你的用户名"
    git config --global user.email "你的邮箱"
    

    配置的用户名和邮箱仅作为你以后的提交署名,Git并不会去验证你写的用户名和邮箱是否真实正确。

    如果你的系统是mac os,可以在终端执行命令

    open ~
    

    打开用户根目录,里面有一份隐藏文件.gitconfig,保存了你刚刚配置的用户名和密码。
    如果你不想敲命令配置用户名和密码的话,也可以直接修改.gitconfig里的[user]段。

    这里有一个命令用于显示/隐藏mac文件:

    显示
    defaults write com.apple.finder AppleShowAllFiles -bool true
    隐藏
    defaults write com.apple.finder AppleShowAllFiles -bool false
    

    忽略不需要提交的文件

    创建一份命名叫.gitignore的文件,可以让Git忽略指定的文件。
    如果.gitignore文件放在工作区根目录,则影响整个工作区,包括子目录。
    如果.gitignore文件放在子目录,则影响子目录及其包含的子目录。

    https://www.gitignore.io/输入你的开发语言,它可以帮你生成一份忽略清单。如果你觉得它生成的东西太多看花眼,也可以写这几个实用的:

    *.xcscheme
    *.xcuserstate
    *.xcbkptlist
    xcschememanagement.plist
    

    工作区、暂存区和版本库

    我们可以把最终保存修改的地方叫做版本库,这是提交的目的地。
    然后把git能感知的文件目录及其子目录叫做工作区。

    一般来说,我们在工作区里写代码,干活,噼呖啪啦搞完以后,就想提交一下修改,好让git保存下来。
    这时候,要想从工作区提交代码到版本库,必须要经过暂存区,版本库只认从暂存区过来的提交,也就是说,提交这个动作只能从暂存区发起,到达版本库。

    这样,同一份文件,最多可以同时存在三种不同的内容。怎么会这样?

    1. 有一份文件,现在三区同步,没有任何修改。此时文件在三个区的内容分别为A、A、A。
    2. 程序员gg开始干活了,对工作区上的文件一顿猛敲,内容变成了B。此时文件在三个区的内容是B、A、A。
    3. gg觉得这顿猛敲可以告一段落了,就打算把它提交了吧。然而想要提交,是要先放到暂存区的,好吧,把工作区的修改同步到暂存区,发出一个add命令,这样,三个区的内容变成了B、B、A。
    4. gg刚敲完add命令,就后悔了,不对,这样写有bug,得改改再提交。于是继续在工作区把文件内容改为了C。于是,三个区的内容变成了C、B、A。
    5. 就在这个时候,gg接到了通知要去开会,时间还不短,gg想这回来以后还能记得思路吗,电脑还健在否?小bug无伤大雅,赶紧提交一波再说。于是把暂存区的内容B提交了。此时,三个区的内容分别是C、B、B。
    6. gg开完会已经深夜了,匆匆把C暂存起来,觉得精神状态不对,没敢提交,于是拖着疲惫的身躯回了家...

    暂存和储藏

    在Git中,有两个词比较相似,stagestash,暂存和储藏。

    暂存stage是暂存区,在暂存区的东西可以被提交到最终的版本库。
    然而,stage的东西其实也可以不提交到版本库,而是储藏起来,即进行stash。

    有时在进行某个事情的时候,突然有其它紧急问题需要立即修改,这时候可以考虑把当前修改储藏起来。

    git stash
    

    这个操作会把整个stage区储藏起来,然后你可以继续进行其它的修改操作,正常提交。

    然后

    git stash pop
    

    pop操作可以把储藏区内容恢复到暂存区。

    参考资料:

    《Git学习指南》

    相关文章

      网友评论

          本文标题:Git笔记与思考一:基础概念

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