git和github的使用笔记

第1章:Git的起源

自由主义教皇“林纳斯·托瓦兹”


Git是由Linux之父Linus开发的,在2005年4月3号开始开发,仅四天时间Git就可以投入使用了。到同年6月份,Linux已经在使用Git管理代码了。

Linux版本管理最早是通过手工合并代码的方式进行的,不使用CVS的原因就是Linus坚决反对这种集中式的版本管理工具。而迫于其他开发者的压力,Linus最后决定使用BitKeeper一种分布式的版本管理工具。与集中式不同,使用分布式的版本管理工具每个人都可以在本地进行版本的管理,如日志提交、代码提交、创建tag和分支、合并分支等等操作。

而在2005年4月,Andrew Tridgell 为了开发一个可以与BitKeeper交互的工具,试图反编译BitKeeper。这让开发该软件的公司BitMover得知并取消了Linux社区免费试用BitKeeper的权利。这也成为了Linus开发Git的契机,促进了Git这一伟大作品的诞生。


第2章:Git的使用

1.Git的安装

Windows版的Git,从https://git-scm.com/download/win下载然后按默认选项安装即可。

安装完成后,右键打开菜单栏找到“Git”->“Git Bash Here”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!


默认git窗口背景是黑色的,字体也比较小,可以通过右键设置


安装完成后,还需要最后一步设置,在命令行输入:

git config --global user.name "Your Name"

git config --global user.email "email@example.com"

git config user.name 查看配置的姓名

git config user.email 查看配置的邮箱

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。

git配置的文件会自动保存在:c盘----用户----asus----.gitconfig


2. Linux的几条命令

mkdir xxx 新建文件夹

几条

vi x.txt 新建文件

    输入 i 进入编辑模式

    ESC + :+ wq 保存并退出

    ESC + :+ q! 不保存并退出

cd xxx 进入xxx目录

cd .. 返回上一级目录

ls 列出当前文件夹中所有文件

pwd 显示当前目录

cat x.txt 显示文件内容

clear 清屏


3. 创建版本库

git init    初始化版本库

    创建成功会提示 Initialized empty Git repository in c:/Users/xxx/Desktop/demogit/.git/

    初始化执行git命令,会提示fatal: Not a git repository (or any of the parent directories): .git

    你还会发现目录上多出一个.git的文件夹,这个文件夹是Git来跟踪管理版本库的,不要去修改和删除这个文件里的内容。


git add x.xx    添加指定文件到暂存区中

    不会有任何提示,但是提交成功了

    失败会提示fatal: pathspec 'x.txt' did not match any files

    可能会出现警告,由于linux和window的换行符不一致导致的。

    警告内容:warning: LF will be replaced by CRLF in a.txt.

    解决方式:git config --global core.autocrlf false

怎么查看文件有没有添加成功呢?

git status

    1. 红色表示在工作区。

    2.绿色表示在暂存区。

    3. 没有任何显示代表所有文件位于版本区。

git commit -m 'xxx'   提交暂存区所有文件到版本区

    提交成功会提示:

        [master (root-commit) 88bbb64] first commit

        1 file changed, 2 insertions(+)

        create mode 100644 x.txt

如果只输入git commit会出问题,这时需要ESC + :+ q! 退出就好


4. 理解工作区+版本区+暂存区


    工作区(working Directory):简单的理解——你在电脑里能看到的目录。

    暂存区(stage):介于工作区和版本区中间,工作区到版本区的“必经之路”

    版本库(Repository):工作区有一个隐藏目录.git,准确的来说这个不算工作区,而是Git的版本库。

第一步是用git add把文件添加进暂存区。

第二步是用git commit把暂存区的所有内容提交到当前版本库。


5. 差异对比

    git diff : 比较暂存区与工作区

    git diff --cached : 比较版本区与暂存区

    git diff master : 比较版本区与工作区


6. 日志+版本号

    git log 显示从最近到最远的所有提交日志

    git reflog 显示每次提交(commit)的commit id


7. 版本回退+版本穿梭+版本撤销

    git reset --hard HEAD^    版本回退(回退一次提交)

    git reset --hard 版本号  回退到指定的commit id版本

    git reset HEAD  用版本库中的文件去替换暂存区的全部文件。

    git checkout -- x.txt    用暂存区指定文件去替换工作区的指定文件(危险)

    git checkout HEAD x.txt  用版本库中的文件替换暂存区和工作区的文件(危险)

    git rm --cached x.txt 从暂存区删除文件


8. 删除文件

!!!文件或者文件夹必须通过git管理(也就是提交到版本区)才能进行删除

    git rm x.txt 删除文件(使用git提供的命令删除文件结果会同步到暂存区)

    git rm -r xxxx 删除文件夹(不能删除空文件夹)

git交互图示如下:



9. 分支

分支图示

分支常用命令

git checkout -b dev 创建dev分支,并切换到dev分支(会把原来分支的文件复制一份到新分支中)

git branch  查看当前分支

git checkout master 切换分支

git merge dev  合并dev分支到当前分支

git branch -d dev  删除指定分支

git diff branch1 branch2 显示出两个分支之间所有有差异的文件的详细差异

git diff branch1 branch2 --stat 显示出两个分支之间所有有差异的文件列表

git diff branch1 branch2 xxx  显示指定文件的详细差异

!!! 当文件夹为空时创建新分支会把原来分支覆盖掉,要创建分支必须先把当前分支的文件提交到版本库


第3章:版本控制系统的区别

1. 集中式版本控制系统

    代表有SVN、CVS

       集中式版本控制系统,版本库是集中存放在中央服务器的,每个开发人员电脑里只有其中一个版本。


2. 分布式版本控制系统

     代表有Git、BitKeeper

        每个开发人员电脑里都有一个完整的版本库。同时,它也需要一台充当“中央服务器”的电脑,来方便“交换”大家的代码修改。


3. 集中式与分布式的区别


第4章:GitHub

1. GitHub是什么?

    GitHub是一个Git项目托管网站。需要注册一个github账号用来托管代码


2. GitHub能做什么?

    能够分享你的代码或者其他开发人员配合一起开发。GitHub是一个基于Git的代码托管平台,Git并不像SVN那样有一个中心服务器。目前我们使 用到的Git命令都是在本地执行,你就需要将数据放到一台其他开发人员能够连接的服务器上。


3. GitHub远程仓库的使用

3.1. 本地仓库内容推送给远程仓库

本地库和远程库打交道时,要注意将本地文件交给本地库管理

(1) 新建本地仓库

            git init

            git add .

            git commit -m “first commit”

(2) 新建远程仓库

            在GitHub网站上点击New repository


(3) 本地仓库和远程仓库进行关联

            git remote add origin https://github.com/xpromise/oa.git (HTTPS)

(4) 把本地仓库内容推送到远程仓库中

            git push -u origin master (首次加-u)

我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送到远程新的master分支,还会把本地master分支和远程的master分支关联起来,在以后的推送时可以简化命令git push origin master。

备注:若在成功推送过一次代码后,电脑不能够自动记住github的账户和密码,执行以下命令解决:git config --global credential.helper store

3.2. 远程仓库有内容克隆到本地进行开发

克隆远程仓库到本地

git clone https://github.com/xxx.git  (HTTPS)

!!! git克隆的是所有的分支,通过git branch查看不了,需要通过git checkout 分支名     直接切换到指定分支

3.3. 本地有内容,远程有内容,更新不同的内容

第一种拉取方式:git pull origin master

        将远程仓库的master分支上代码版本复制/合并到本地master分支上

        !!! git pull可以直接拉取远程仓库最新分支内容

第二种拉取方式:git fetch origin master:tmp

        新建一个tem分支,将远程仓库的master分支上代码版本复制到tep分支上,不会自动合并

        !!!这种方式不常用,但面试可能会问


4. GitHub其他功能

1. Fork

将别人的项目clone一份,但是owner变成自己,这样你就可以在遵守open source license的前提下任意修改这个项目了。

相当于你在原项目的主分支上又建立了一个分支,你可以在该分支上任意修改,如果想将你的修改合并到原项目中,可以pull request,这样原项目的作者就可以将你修改的东西合并到原项目的主分支上去,这样你就为开源项目贡献了代码,开源项目就会在大家的努力下不断地壮大和完善。


2. GitHub Pages(使用github搭建个人网站)

推送本地代码到GitHub仓库

创建本地仓库

        git init

        git add .

        git commit -m "xxx"

创建GitHub远程仓库

本地仓库关联远程仓库

        git remote add origingit@github.com:xpromise/jd.git

推送本地更新

        git push -u origin master

配置GitHub Pages选项


需要注意的问题

目录第一层需要有一个index.html文件作为启动文件,命名不可更改。


部署完之后这个网址就可以访问了https://zhanchujin.github.io/zhanchujin/


第五章:总结git常用的操作

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342