git 学习笔记

Posted 写代码的运维妞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于git 学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

Git学习笔记

git学习笔记

git学习笔记

git学习笔记

git学习笔记

代码管理工具 --- git的学习笔记四《重新整理git》