全站资源开放下载,感谢广大网友的支持
链接失效请移步职业司平台
非盈利平台

非盈利平台

只为分享一些优质内容

Java帮帮-微信公众号

Java帮帮-微信公众号

将分享做到极致

微信小程序

微信小程序

更方便的阅读

职业司微信公众号

职业司微信公众号

实时动态通知

安卓APP

安卓APP

我们从此不分开

程序员生活志-公众号

程序员生活志-公众号

程序员生活学习圈,互联网八卦黑料

支付宝赞助-Java帮帮社区
微信赞助-Java帮帮社区

git&github--基础认识(一)[云图智联]

4
发表时间:2020-07-10 13:14

免费学习视频欢迎关注云图智联:https://e.yuntuzhilian.com/

1 git简介

  1. git为分布式版本控制系统,svn是集中式版本控制系统

  2. 集中式:版本库存放在中央服务器,工作时,用自己电脑先从中央服务器取得最新的版本,干完活后,再把自己的活推送给中央服务器

  3. 分布式版本控制系统:没有中央服务器,每个人的电脑上都是一个完整的版本库,当你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。但在实际使用分布式版本控制系统时,其实很少在两人之间的电脑上推送版本库的修改,因为可能两人不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已

2 git中的几个重要概念

  1. 工作区:你在电脑里能看到的目录

  2. 版本库:工作区中一个隐藏的".git"文件就是Git的版本库,版本库中包含以下重要内容

    1. 暂存区(stage)

    2. Git自动创建的master分支,以及指向master的指针HEAD



3 git基本功能

  1. 因为Git是分布式版本控制系统,所以,每个机器提交时都必须自报家门,可以使用如下命令设置你的名字和Email地址

#这个命令,会在"~/.gitconfig"文件中添加信息#--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置git config --global user.name "Your Name"git config --global user.email "email@example.com"
  1. 版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来

#将当前目录变成Git可以管理的仓库,命令执行后,当前目录下多了一个.git隐藏文件git init
  1. 将文件添加到暂存区

git add 文件名
  1. 将暂存区所有文件提交到当前分支

#如果不执行git add,而直接执行git commit,那么修改内容不会被提交。也就是说git commit只负责把暂存区的修改提交git commit -m "本次提交的说明"#同时完成git add和git commit两个操作git commit -am README.md
  1. 从近到远显示提交日志

git log#省略一些不必要信息git log --pretty=oneline
  1. 还原到指定版本

#1. HEAD指向当前分支master的最后一次提交#2. HEAD^指向当前分支master的上一次提交#3. HEAD^^表示上两个,HEAD~100表示上100个#4. 注意,如果使用git reset从版本10,退回到版本5,在版本5中使用git log命令,就无法显示6-10版本的相关信息,例如commit idgit reset --hard HEAD^
  1. 前进到指定版本

#1. 用来记录你的每一次命令,在这里能找到之前提交的commit idgit reflog#2. 利用commit id前进到指定版本,最后一个参数为commit id,是一个哈希值,写4位以上即可git reset --hard 1094a
  1. 查看工作区与暂存区(当前版本)区别

git diff#比较工作区与当前版本(已commit中内容)区别git diff HEAD#比较工作区与当前版本中指定文件区别git diff HEAD -- 文件名 

9.撤销工作区的修改

  1. 如果文件自修改后还没有被放到暂存区,会将该文件撤销到和最新版本库中内容相同

  2. 如果文件已被放到暂存区后又做了修改,会将该文件撤销到放到暂存区后的状态

#如果不加"--"",就变成了"切换到另一个分支"的命令git checkout -- readme.txt

10.撤销暂存区的内容

#注意这是将git add操作撤销,而上面是撤销工作区的修改,其实本质上就是恢复到了指定的版本git reset HEAD readme.txt

11.从版本库中删除文件

#1. 先在工作区删除,如果此步骤为误删,可以使用上面介绍的git checkout -- readme.txt恢复工作区内容rm test.txt#2. 在暂存区中提交删除git rm test.txt#3. 提交到版本库git commit -m "remove test.txt"

12.查工作目录和暂存区的状态,和git log区别在于,后者用于查看commit的信息,前者用于查看当前目录与最新版本的区别,以及暂存区与最新版本的区别

git status

4 github使用

4.1 在github上创建账户

4.2 设置 SSH Key

1.使用https url和SSH url都可以将远程项目克隆到本地

2.使用ssh克隆时,你必须是你要克隆的项目的拥有者或管理员,且需要先添加 SSH key ,否则无法克隆

3.可以先使用自己电脑创建SSH key公钥和私钥,然后将公钥告诉给github,这样,就可以在自己的电脑上,通过ssh协议,使用私钥来访问github的服务器了

4.设置流程
1.本机创建创建一个 SSH key

#-t 指定密钥类型,默认是 rsa ,可以省略。#-C 设置注释文字,比如邮箱。#-f 指定密钥文件存储文件名,默认文件名为id_rsa(私有密钥)和id_rsa.pub(公开密钥)ssh-keygen -t rsa -C "your_email@example.com"#Generating public/private rsa key pair.#Enter file in which to save the key#(/Users/your_user_directory/.ssh/id_rsa):#按回车键#Enter passphrase (empty for no passphrase):#输入push文件的时候要输入的密码,可以不输密码直接回车#Enter same passphrase again:#再次输入密码

2.github上添加公开密钥,今后就可以用私有密钥进行认证了,在SSH Keys中粘贴 id_rsa.pub 文件里的内容

cat ~/.ssh/id_rsa.pub
  1. 修改私钥密码

cd ~/.ssh#修改私钥,执行命令后提示输入密码,两次都直接回车就可以去掉密码,去掉密码后,git push就不再需要输入密码ssh-keygen -p -f id_rsa

4.3 在github上创建仓库:Create repository

4.4 从远程仓库克隆到本地

#此处也可以使用https协议克隆#克隆后,Git会自动把本地的master分支和远程的master分支对应起来了,远程仓库的默认名称是origingit clone git@github.com:michaelliao/gitskills.git#查看远程库信息git remote#查看远程库详细信息,如果没有推送权限,就看不到push的地址#origin   git@github.com:michaelliao/learngit.git (fetch)#origin   git@github.com:michaelliao/learngit.git (push)git remote -v#删除远程库git remote rm origin

4.5 如果已经存在本地仓库,也可以额为本地库添加远程仓库

#1. 创建本地库#2. 在github上创建仓库#3. 为本地库关联远程库    #1. 注意michaelliao必须是自己的仓库,如果是别人的,虽然能加上,但push不上去,因为你的SSH Key公钥不在他人的账户列表中    #2. 添加后,origin为远程仓库别名,这是Git默认的叫法,也可以改成别的git remote add origin git@github.com:michaelliao/learngit.git

4.6 本地库与远程库内容交互

#1. 将本地库中当前分支推送到远程的master分支上git push origin master#2. 拉取git pull origin master

免费学习视频欢迎关注云图智联:https://e.yuntuzhilian.com/


Java帮帮学习群生态

Java帮帮学习群生态

总有一款能帮到你

Java学习群

Java学习群

与大牛一起交流

大数据学习群

大数据学习群

在数据中成长

九点编程学习群

九点编程学习群

深夜九点学编程

python学习群

python学习群

人工智能,爬虫

测试学习群

测试学习群

感受测试的魅力

Java帮帮生态承诺

Java帮帮生态承诺

一直坚守,不负重望

初心
勤俭
诚信
正义
分享
友链交换:加帮主QQ2524138991 留言即可 24小时内答复  
业司
满吉教育资讯
会员登录
获取验证码
登录
登录
我的资料
留言
回到顶部