Git 学习笔记

Git 学习笔记

1. 创建版本库
    
    a. 初始化一个仓库: git init

    b. 添加文件到 Git 仓库
       . 第一步: git add <file> 
       . 第二部: git commit -m "描述"

    c. 其它命令:
       . 新建目录: mkdir <文件夹名字>
       . 查看隐藏目录: ls -ah
       . 显示当前路径名:  pwd



2. 时光机穿梭

   . 随时掌握工作区的状态: git status
   . 查看文件的修改内容: git diff

       a. 版本回退
           . 查看提交的历史, 以便退回到任意版本: git log
           . 重返未来终极命令(我喜欢): git reflog
           . HEAD指向当前版本,上一个版本为HEAD^, 以此类推HEAD^^...; 有个简写HEAD~100
           . 版本穿梭: git reset --hard commitid/(HEAD^)/(HEAD~数字)  (commitid可以通过 git log 或者 git reflog来获取)   
           

       b. 工作区和暂存区
            . 主要是理论:
               文件往Git版本库里添加的时候,是分两步执行的:
                 第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
                 第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
                 因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。
                 可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。

       c. 管理修改
            . Git是如何跟踪修改的:
                  每次修改,如果不add到暂存区,那就不会加入到commit中。
            . 命令 git diff HEAD -- <file> :
                  可以查看工作区和版本库里面最新版本的区别。

       d. 撤销修改
            . 命令 git checkout -- <file>:(场景1)
                  当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时。
            . 命令 git reset HEAD <file>:(场景2)
                  当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,
                  分两步,第一步用 git reset HEAD <file>,就回到了场景1,
                          第二步用 git checkout -- <file>。
            . 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考 a版本回退 一节,不过前提是没有推送到远程库。

       e. 删除文件
            . 命令 git rm:
                用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,
                但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
                然后 git commit -m "描述"
            c. 其它命令:
                  rm <file>:
                    在工作区移除某个文件


3. 远程仓库
     
    .第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有
            id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),
            创建SSH Key:
                $ ssh-keygen -t rsa -C "1356988206@qq.com"
            之后一路回车即可。

    .第2步:登陆 GitHub,打开 Account settings,添加 SSH Keys 即可。
    
    ps: 为什么GitHub需要SSH Key呢?
            因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,
            所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
        当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,
        只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。  


      a. 添加远程库
           . 本地 git 仓库关联一个远程库, 使用命令:
               git remote add origin <地址 https://github.com/SorrowX/learngit.git> 

           . 关联后推送 master 分支的所有内容(也只有第一次使用这个命令), 使用命令:
               git push -u origin master

           . 每次本地提交后,只要有必要,就可以使用命令:
               git push origin master    推送最新修改

           ps: 使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令。    


      b. 从远程库克隆

           . 要克隆一个仓库,首先必须知道仓库的地址, 然后使用命令:
                git clone <地址 git@github.com:SorrowX/learngit2.git>