zoukankan      html  css  js  c++  java
  • github简易教程


    【安装与配置】:

    1.注册帐号: https://github.com/ 假设帐号xuxian ,密码123456,邮箱xuxian@126.com ;
    2.安装msysGit(下载地址 http://msysgit.github.io/);
    3.配置认证本地与github的帐号关联:
    3.1 打开"git bash"命令工具
    3.2 git config --global user.name "xuxian" //配置用户
    3.3 git config --global user.email "xuxian@126.com" //配置邮箱
    3.4 创建SSH Keys密钥 (检查是否安装):
    3.4.1 cd ~/.ssh //进入ssh命令
    3.4.2 ssh-keygen -t rsa -C "xuxian@126.com" //生成密钥
    3.4.3 成功后找到对应的id_rsa.pub文件,并复制所有文本(密钥)
    3.4.4 在github网站中找到添加SSH key, 将文本(密钥)粘贴到key中,title可选命名。
    3.4.5 ssh -T git@github.com //测试连接是否成功

    【创建Repository(仓库或项目)和管理】:

    1.在github网站新建一个仓库(Repository),假设命名proj,勾选Init...README;
    2.创建用于管理proj仓库的目录:
    2.1打开"git bash"命令工具
    2.2. mkdir proj //新建目录
    2.3 cd proj //进入目录
    3. 与仓库建立连接:
    3.1 git init //初始化配置
    3.2 git remote add origin git@github.com:xuxian/proj.git //建立仓库远程连接
    3.3 git pull origin master //拉取远程数据
    4. 本地文件上传
    4.1 在将文件拷贝到当前目录
    4.2 git add .
    git commit -m "添加新内容"
    git push origin master

    完,补充知识[Git远程操作详解] : http://www.ruanyifeng.com/blog/2014/06/git_remote.html

    【关于中文乱码】:

    1.进入git安装目录
    2.etcgitconfig文件中添加:
    [gui]
    encoding = utf-8
    [i18n]
    commitencoding = utf-8
    logoutputencoding = gbk
    [svn]
    pathnameencoding = gbk
    [core]
    quotepath = false
    3.etcgit-completion.bash添加:
    alias ls='ls --show-control-chars'
    4.etcinputrc修改:
    set output-meta on
    set convert-meta off
    5.etcprofile添加:
    export LESSCHARSET=utf-8

    【分支管理】:

    补充知识[Git分支管理策略]: http://www.ruanyifeng.com/blog/2012/07/git.html

    例子:
    1.

    git branch //查看分支, 参数-r列出远程仓库中的分支,而-a则远程与本地仓库的全部分支
    git branch name //创建分支
    git checkout name //切换分支
    git checkout -b name //创建+切换分支:
    git checkout -b feature-x develop //创建一个继承分支
    git checkout -b 分支名 远程仓库名/分支名 //。。。
    git merge name //合并name分支到当前分支:
    git merge --no-ff develop //快进式合并develop分支到当前分支
    git branch -d name //删除分支,只能删除已经被当前分支所合并过的分支,而要强制删除没有被合并过的分支,可以使用-D。
    git branch -m oldbranch newbranch //-M用来强制重命名,如newbranch已经存在的时候。


    【git pull 用法】:

    git pull <远程主机名> <远程分支名>:<本地分支名> // 取回远程主机某个分支的更新,再与本地的指定分支合并
    git pull origin next:master //取回origin主机的next分支,与本地的master分支合并
    git pull origin next //如果远程分支是与当前分支合并,则冒号后面的部分可以省略
    git pull origin next == git fetch origin 操作 + git merge origin/next操作
    git branch --set-upstream master origin/next //指定master分支追踪origin/next分支。建立一种追踪关系(tracking),允许手动建立追踪关系.
    git pull origin //本地的当前分支自动与对应的origin主机”追踪分支”(remote-tracking branch)进行合并
    git pull //当前分支自动与唯一一个追踪分支进行合并。
    git pull --rebase <远程主机名> <远程分支名>:<本地分支名> //如果合并需要采用rebase模式,可以使用–rebase选项。

    【git push 用法】:

    git push <远程主机名> <本地分支名>:<远程分支名> //将本地分支的更新推送到远程主机
    git push origin master //将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建
    git push origin :master //如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支
    git push origin :master == git push origin --delete master
    git push origin //将当前分支推送到origin主机的对应分支.
    git push //如果当前分支只有一个追踪分支,那么主机名都可以省略
    git push -u origin master //上面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。
    git push --all origin //将所有本地分支都推送到origin主机
    git push origin --tags //git push不会推送标签(tag),除非使用–tags选项。


    【git remote 用法】:

    git remote //列出所有远程主机
    git remote -v //参看远程主机的网址
    git remote show <主机名> //查看该主机的详细信息
    git remote add <主机名> <网址> //用于添加远程主机
    git remote rm <主机名> //用于删除远程主机
    git remote rename <原主机名> <新主机名> //用于远程主机的改名

    【git fetch 用法】:

    git fetch <远程主机名> //将某个远程主机的更新,全部取回本地,默认情况下,git fetch取回所有分支(branch)的更新。
    git fetch <远程主机名> <分支名> //如果只想取回特定分支的更新,可以指定分支名
    git fetch origin master //比如,取回origin主机的master分支,要用”origin/master”的形式读取.
    git branch -r //结果:origin/master
    git branch -a //结果 master remotes/origin/master
    git checkout -b newBrach origin/master //取回远程主机的更新以后,可以在它的基础上,使用git checkout命令创建一个新的分支。
    git merge origin/master //在本地分支上合并远程分支

    【git clone 用法】:

    git clone <版本库的网址> //从远程主机克隆一个版本库
    git clone https://github.com/jquery/jquery.git //克隆jQuery的版本库,该命令会在本地主机生成一个目录,与远程主机的版本库同名.
    git clone <版本库的网址> <本地目录名> //如果指定不同的目录名.
    //git clone支持多种协议,除了HTTP(s)以外,还支持SSH、Git、本地文件协议等,下面是一些例子
    git clone -o jQuery https://github.com/jquery/jquery.git //使用的远程主机自动被Git命名为origin,如果想用其他的主机名,-o选项指定

    【其他注意】:

    补充知识 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

    1.初始化一个Git仓库,使用git init命令。
    添加文件到Git仓库,分两步:git add <file>; git commit;
    2.HEAD指向当前版本,在版本的历史之间穿梭,使用命令git reset --hard commit_id,
    穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
    要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本
    3.理解工作区,暂存区,版本库,工作区就是你在电脑里能看到的目录,暂存区是存放在.git目录里的。
    4.如果不add到暂存区,那就不会加入到commit中。
    5.场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
    场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
    场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
    6.命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,
    但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
    7.要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
    关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
    此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
    8.要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。
    Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快
    9.Git鼓励大量使用分支:
    查看分支:git branch
    创建分支:git branch name
    切换分支:git checkout name
    创建+切换分支:git checkout -b name
    合并某分支到当前分支:git merge name
    删除分支:git branch -d name
    10.Git分支十分强大,在团队开发中应该充分应用,(git merge --no-ff -m "merge with no-ff" dev)
    合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
    11.修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
    当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
    12.开发一个新feature,最好新建一个分支;
    如果要丢弃一个没有被合并过的分支,可以通过git branch -D name强行删除。
    13.查看远程库信息,使用git remote -v;
    本地新建的分支如果不推送到远程,对其他人就是不可见的;
    从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
    在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
    建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
    从远程抓取分支,使用git pull,如果有冲突,要先处理冲突
    14.命令git tag name用于新建一个标签,默认为HEAD,也可以指定一个commit id;
    -a tagname -m "blablabla..."可以指定标签信息;
    -s tagname -m "blablabla..."可以用PGP签名标签;
    15.命令git push origin tagname可以推送一个本地标签;
    命令git push origin --tags可以推送全部未推送过的本地标签;
    命令git tag -d tagname可以删除一个本地标签;
    命令git push origin :refs/tags/tagname可以删除一个远程标签。
    命令git tag可以查看所有标签;
    16.查看状态git status
    记录删除或修改了哪些文件:git commit -a
    删除一个文件: git rm 文件名
    删除多个文件,cd 到你要删除的目录下,当然 * 可以换成指定目录: git rm * -r
    追踪关系一般指的是本地和远程两者同名;

  • 相关阅读:
    KNN算法
    从malloc中窥探Linux内存分配策略
    ECC校验原理以及在Nand Flash中的应用
    周大福、周六福、周生生等区分
    USB时钟为什么是48MHz
    NFS网络操作系统介绍以及相关应用
    办公技巧
    嵌入式设备中使用短信服务
    Android App测试要点
    Excel中 设置使得每行的颜色不一样
  • 原文地址:https://www.cnblogs.com/xuxian/p/4016093.html
Copyright © 2011-2022 走看看