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
  • 相关阅读:
    how to pass a Javabean to server In Model2 architecture.
    What is the Web Appliation Archive, abbreviation is "WAR"
    Understaning Javascript OO
    Genetic Fraud
    poj 3211 Washing Clothes
    poj 2385 Apple Catching
    Magic Star
    关于memset的用法几点
    c++ 函数
    zoj 2972 Hurdles of 110m
  • 原文地址:https://www.cnblogs.com/huamingao/p/6222615.html
Copyright © 2011-2022 走看看