github使用

集中式的版本控制系统:SVN,CVS

版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,
然后开始干活,干完活了,再把自己的活推送给中央服务器。
中央服务器就好比是一个图书馆.你要改一本书.必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。
集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,
可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟

分布式版本控制系统:Git

分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,
就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?
比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,

你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

安装Git

Linux:
终端中直接输入 sudo apt-get install git
Mac:
运行Xcode,菜单“Xcode”->“Preferences”,
在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了
Windows:
下载地址:https://git-for-windows.github.io
安装后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
最后:
在命令行输入名字和邮箱进行登记:
$ git config --global user.name “Your Name”
​ $ git config --global user.email “email@example.com”

创建版本库(repository)

可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,
以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

  1. 创建一个空的文件夹(frankGit),确保目录名和父级目录名没有中文和符号
  2. 命令行:git init 把这个目录变成Git可以管理的仓库
    tips:
    所有的版本控制系统,其实只能跟踪文本文件的改动,也就是在文本中修改和添加内容都可以被检测到。
    图片、视频、Word这种二进制文件,无法跟踪变化,只能检测文件大小发生了变化。

将文件添加到版本库

  1. 创建一个readme.md文件
    内容:do you love me?
  2. 放在frankGit或frankGit的子目录
  3. 命令行: git add readme.md //把文件添加到仓库暂存区,可以添加多次之后再进行commit
  4. 命令行: git commit -m “本次提交了XXXX,么么哒” //把文件提交到仓库

查看版本库状态和修改记录

  1. 修改readme.md文件 内容:do you hate me?
  2. 命令行:git status //仓库当前的状态
  3. 查看修改具体内容:git diff
  4. 再次提交到版本库暂存区:git add readme.md
  5. 再查看状态:git status
  6. 再次提交到版本库:git commit -m “呵呵,这次我不爱你了。”
  7. 再查看状态:git status
  8. 编辑: vim readme.md
  9. 编辑模式:i
  10. 结束编辑模式:esc
  11. 保存并退出: 冒号wq 回车
  12. cat radme.md 查看文件
  13. ls 查看当前目录文件
    [每次修改,如果不add到暂存区,那就不会加入到commit中。]

版本回退

  1. 命令行:git log //查看提交的历史记录
  2. 命令行:git log --pretty=oneline //美化输出结果,可以看到一串十六进制的版本号
  3. 命令行:git reset --hard HEAD^ //回退到上一个版本
  4. 命令行:git reset --hard 版本号前几位 //也可以通过版本号跳转到指定版本
    命令行:git reflog //查看命令的历史记录

撤销修改

  1. 命令行:git checkout – readme.md //撤销本地文件的修改
  2. 命令行:git reset HEAD readme.md //撤销暂存区文件的修改
  3. 命令行:git reset --hard HEAD^ //撤销版本库里文件的修改:回退到上一个版本

删除文件

  1. 命令行:rm readme.md //删除本地文件
  2. 命令行:git status //提示本地和版本库不一致
  3. 命令行:git rm readme.md //删除缓冲区文件
  4. 命令行:git commit -m “本次删除了readme文件,以此为据” //删除版本库里文件
  5. 命令行:git checkout – readme.md //如果是误删,可以撤销删除操作

配置远程仓库

GitHub:用于提供Git仓库托管服务 ,只要注册一个GitHub账号,就可以免费获取Git远程仓库

步骤:
  1. 打开github,注册一个账号。
  2. 创建ssh key,在C:\用户\用户名.ssh目录,如果没有id_rsa文件和id_rsa.pub文件,就需要创建。
    2-1. ssh-keygen -t rsa -C “154580967@qq.com”
    2-2. 一路默认
  3. 登录GitHub,打开“Account settings”,“SSH Keys”页面:
    3-1. 点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:
    3-2. 点“Add Key”,就应该看到已经添加的Key:
    [在GitHub上免费托管的Git仓库,任何人都可以看到。所以,不要把敏感信息放进去。]

从本地同步到远程库

已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步

步骤:
  1. 登录GitHub,在右上角找到“Create a new repo”按钮,创建一个新的仓库
  2. 在Repository name填入frankGit,其他默认,点击“Create repository”,就成功地创建了一个新的Git仓库
  3. 命令行:git remote add origin git@github.com:自己的帐户名/frankGit.git //origin是自定义远程库的名字
    [git 解决fatal: Not a git repository:git init]
  4. 命令行:git push -u origin master //将当前分支推送到远程,并将本地master和远程master关联起来
    [推送前确保本地仓库是有东西的,commit过的]
  5. 命令行:git push origin master //把本地master分支的最新修改推送至GitHub

从远程库克隆到本地

  1. 登录GitHub,创建一个新的仓库,名字叫gitskills
  2. 勾选Initialize this repository with a README,自动创建README.md文件。
  3. 命令行:git clone git@github.com:自己的帐户名/gitskills.git
    [可让多人从同一个仓库下载到自己的本地进行开发]

分支管理

分支就是科幻电影里面的平行宇宙,如果两个平行宇宙互不干扰,那对现在的你也没啥影响。
默认分支:master

使用:
  1. 命令行:git branch dev //创建分支dev
  2. 命令行:git checkout dev //切换到dev分支
  3. 命令行:git checkout -b dev //创建分支dev,并切换到dev分支
  4. 命令行:git branch //查看当前分支,前面带*号的就是当前分支
  5. 命令行:git add readme.md
    git commit -m “本次是从dev分支提交的”
  6. 命令行:git checkout master //切换回master
  7. 命令行:vi readme.md //再查看文件,会发现文件中刚添加的内容不存在了。
  8. 命令行:git merge dev //合并指定分支到当前分支
  9. 命令行:git branch -d dev //删除dev分支
  10. 命令行:git branch //再查看,dev分支就没有了
  11. 如果两个分支同时修改一个文件,提交。再合并,就会出现冲突。
  12. 只需要将冲突的文件打开,删除标记,重新add和commit
  13. 命令行:git branch -d dev
  14. 命令行:git log --graph //查看分支合并图

分支管理策略

合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

  1. 命令行:git checkout -b dev //创建并切换到dev分支
  2. 修改readme.md文件并提交到版本库
    命令行:vi readme.md
    命令行:git add readme.md
    命令行:git commit -m “add merge”
  3. 命令行:git checkout master //切换到master
  4. 命令行:git merge --no-ff -m “merge with no-ff” dev //合并dev分支,–no-ff表示禁用Fast forward
  5. 命令行:git log --graph --pretty=oneline --abbrev-commit //查看分支历史
    [master分支应仅用来发布新版本,不应该在master上干活。]
    [小蓝:blue] ->dev[核心开发分支]
    [小红:red] ->dev[核心开发分支] ->master[发布]
    [小黄:yellow] ->dev[核心开发分支]
强行删除分支(feature)
  1. 命令行:git checkout -b feature //创建新分支并切换
  2. 命令行:vi work.js //创建work.js文件
  3. 命令行:git add work.js //添加到缓存区
  4. 命令行:git commit -m “添加一个新的分支咯” //添加到版本库一个新分支
  5. 命令行:git checkout dev //切换回dev分支
  6. 命令行:git branch -d feature //还未合并就要马上删除feature分支
  7. 命令行:git branch -D feature //必须强行删除才可以
多人协作
  1. 命令行:git remote //查看远程库的信息
  2. 命令行:git remote -v //显示更详细的远程库信息
  3. 命令行:git push origin master //把master分支上的所有本地提交推送到远程库
  4. 命令行:git push origin dev //推送dev分支到远程库
    强制推送:git push -u origin dev -f
  5. 当自己和伙伴提交有冲突时,使用git pull把最新的提交从远程库下载下来,在本地合并,再推送。
    命令行:git branch --set-upstream dev origin/dev //指定本地dev分支与远程origin/dev分支的链接
    命令行:git pull --rebase origin master
  6. 命令行:git add readme.md
  7. 命令行:git commit -m “合并后再提交”
工作模式

[repository-点击settings-选择collaborators-搜索框中搜索合作者账号然后add,然后给合作者发确认邮件]
[必须在SSH中添加合作者的pub.key]

  1. 克隆到本地环境
  2. 修改文件先在本地进行提交
  3. 用git push origin branch-name推送自己的修改;
  4. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull origin branch-name 试图合并;
  5. 如果合并有冲突,则解决冲突,并在本地提交;
  6. 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
  7. 如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,
    用命令git branch --set-upstream branch-name origin/branch-name。
  8. git 出现 fatal: refusing to merge unrelated histories 错误,其实这个问题是因为 两个 根本不相干的 git 库
    git pull origin master --allow-unrelated-histories 把两段不相干的 分支进行强行合并
    [master:主分支要时刻与远程同步]
    [dev:开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步]
    [bug:本地修复bug记录,不需要推送到远程]
    [feature:取决于你是否和你的小伙伴合作在上面开发]
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值