zoukankan      html  css  js  c++  java
  • git 学习笔记

     以下内容大部分总结自廖雪峰的git教程,添加了部分自己总结的内容。

    教程原址:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

    特别提示,在使用git命令时,有任何疑问的地方,可以加--help获得使用说明。特别地,如git push --help 会打开本地帮助文档,其中有详细用法

    创建版本库

    • 初始化一个Git仓库:cd到某个目录,使用git init命令,该目录就成了Git仓库。

    • 添加文件到Git仓库,分两步:

      • 第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件;

      • 第二步,使用命令git commit -m 'comment what you commit',完成。

    • 要随时掌握工作区的状态,使用git status命令。

    • 如果git status告诉你有文件被修改过,用git diff <>可以查看修改内容。

    回到过去VS重返未来

    • Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id

    • 在Git中,HEAD表示当前版本,上一个版本就是HEAD∧,上上一个版本就是HEAD∧∧,当然往上100个版本写100个∧比较容易数不过来,所以写成HEAD~100
    • 要回到过去,用git log可以查看提交历史和commit id, 以便确定要回退到哪个版本。

    • 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

    工作区与暂存区

    工作区(working directory),就是你电脑上能看见的目录。工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库(repository)。Git版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

    • 第一步,工作区文件发生了修改,此时git status, 会看到Changes not staged for commit
    • 第二步,git add添加文件,实际上是把文件修改添加到暂存区(stage);此时git status ,会看到 Changes to be commit:

    • 第二步,git commit提交更改,实际上是把暂存区(stage)的所有内容一次性提交到当前分支(master)。

     注意:每次修改,如果不add到暂存区,那就不会加入到commit中。

    撤销修改

    • 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
    • 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
    • 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,git reset --hard HEAD^,不过前提是没有推送到远程库。
    • 命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容

    远程仓库

    • 第一步,注册github账号http://github.com
    • 第二步,创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key: ssh-keygen -t rsa -C "youremail@example.com"
    • 第三步,登陆GitHub,打开“Account settings”,“SSH Keys”页面:然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容

    • 要关联一个远程库,使用命令:git remote add origin git@github.com:huamingao/homework.git (huamingao请替换为你自己的git username,  homework请替换为你自己的git库名)

    • 关联后,第一次推送master分支的所有内容到远程仓库:使用命令:git push -u origin master

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

    • 从远程仓库下载内容到本地,使用git pull命令

    特别注意:上面三行命令是使用ssh连接与github网站进行上传(push)与下载(pull)操作。如需使用http连接与github网站通信,可以使用如下命令,注意这种情况下,可能会弹出提示要求你输入github用户名和密码:

     git push http://github.com/huamingao/homework.git/
     git pull http://github.com/huamingao/homework.git/

    设置代理

    • 在用户主目录下找到 .gitconfig 文件,添加如下行,这样设置了http/https/ssh三种连接的代理
    [user]
        name = username
        email = user mailbox
    [http]
        proxy = http://proxyserver:8080
    [https]
        proxy = https://proxyserver:443
    [ssh]
        proxy = ssh://proxyserver:22
    • 也可以通过执行如下命令,配置.gitconfig文件,执行完成后文件内容就变成了上面那样:
    git config --global user.name "username"
    git config --global user.email usermailbox
    git config --global http.proxy http://proxyserver:8080
    git config --global https.proxy https://proxyserver:443
    git config --global ssh.proxy ssh://proxyserver:22
  • 相关阅读:
    Android ImageView设置图片原理(下)
    C++ 虚函数表 多重继承
    C++ 虚函数表 单继承
    私有继承
    内联函数和宏定义的区别
    #pragma pack(x) CPU对齐
    static 变量(静态变量)
    C++ 中const作用
    如何连接宏参数
    几种常见容器比较和分析 hashmap, map, vector, list ...hash table
  • 原文地址:https://www.cnblogs.com/huamingao/p/6222615.html
Copyright © 2011-2022 走看看