博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Git-github 的基本应用
阅读量:7128 次
发布时间:2019-06-28

本文共 5270 字,大约阅读时间需要 17 分钟。

Git-基本知识点(常用)

一、Git-小百科

基本介绍

Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

功能特性

从一般开发者的角度看git有以下功能:

1、从服务器上克隆数据库

2、在自己的机器中创建分支,修改代码

3、在单机上自己创建的分支上提交代码

4、在单机上合并分支

5、新建一个分支,把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。

6、生成补丁(patch),把补丁发送给主开发者。

7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。

8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。

二、git的操作方法

1、配置当前用户信息

1、首先查看配置列表,判断之前是否绑定过github以及绑定的是什么用户:

git config --list    //查看配置列表复制代码

2、如果没有配置,就配置一下,再次查看配置列表:

git config --global user.name "wwml725"git config --global user.email "wwml725@163.com"git config --list复制代码

注意:

1、git是分布式管理系统,所以每一个机器都必须填写自己的名字和email地址。

2、git config命令的--golbal参数,代表这台机器上所有的git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。(怎么指定?后续会介绍)

2、git常用的操作命令

1、创建目录,进入目录

mkdir fitst  //创建目录cd first    进入目录mkdir test && cd test复制代码

2、显示当前环境的位置

pwd     显示当前环境的位置复制代码

3、初始化

git init      //初始化仓库  自动创建一个master分之ls -al    查看这个文件夹中所有文件(包括隐藏的,注意不是查看分支上的内容)rm -rf .git     如果初始化错误,删除.git文件夹复制代码

4、创建文件、 查看文件内容

touch index.txt    //创建index.txt文件cat index.txt      //查看文件内容复制代码

5、vi命令在文件中插入内容

vi index.txti  (输入内容)esc + :+ w+ q    //保存并且推出q!   //强制退出复制代码

6、在文件中写入内容

echo 1 > index.txt    //在文件中写入内容 覆盖里面的所有内容echo 2 >> index.txt  //在原来的文件末尾添加内容   复制代码

7、删除文件

rm index.txt  //删除文件rm -rf text   //删除文件夹复制代码

3、工作区-暂存区-历史区

这都是基于一个分支master上或者其他子分支dev1

1、查看git状态
git status复制代码
  • 红色:工作区。
  • 绿色:暂存区。
2、推送到暂存区
git add index.txt   //只推送这个文件 git add .  //推送工作区所有文件复制代码
3、推送至历史区
git commit -m"注释""复制代码
4、联合提交
复制代码

注意

1、git add .将文件从工作区推送到暂存区。

2、git commit -m“注释"将文件从暂存区推送至历史区(也就是推送到了这个分支上)

3、我们可以多次add不同的文件或者一次性add所有文件,commit可以一次性提交多个add后的文件。

4、git commit如果没有添加-m,就会弹出一个编辑页面,可以输入你的注释,然后按ESc退出编辑模式,在输入:wq!退出页面。

4、代码对比和回滚

实际上就是查看工作区、暂存区、历史区文件的区别。

git int touch 1.txttouch 2.txtgit add 1.txt 2.txtgit status git rm --cached 1.txt    //删除暂存区的1.txtgit reset 1.txt   //将文件从暂存区回退到工作区  作用同上git status  复制代码
git diff   //比较工作区和暂存区 某些文件的区别git diff --cached	//暂存区和历史区最新版本的区别git diff master		//工作区和历史区最新版本的区别复制代码

删除文件

git rm 1.txt   //删除分支上历史区的文件git rm --cached 1.txt   //删除暂存区的这个文件rm 1.txt   //删除工作区文件但是不会删除暂存区文件复制代码
git log   //查看分支的版本git reflog	//查看版本复制代码

git loggit reflog都是查看分支的版本,后者能查看删除的版本。

5、分支管理

git默认主分支是:master

1、查看当前项目的分支
git branchgit branch dev 创建子分支dev复制代码

注意: 1、可以创建多个子分支,都是从主分支master复制过来的,在master分支的基础上修改。 2、在dev上创建的分支dev1,和dev内容一致。 3、将文件提交到某个分支上,这个文件就属于哪个分支。 4、一般情况下,开发项目,都会有一个主分支,在这个主分支上建立一个小分支进行开发,如果发生错误不会影响主分支。 5、文件经过git add commit 之后才算是提交至分支。

#####2、切换分支

git checkout dev  //切换至dev分支git checkout -b dev  //切换并创建分支复制代码
3、合并分支
git merge 分支名称复制代码
  • 1、默认master是主干,合并分支要在主干git merge 分支名
  • 2、合并分之后,被合并的分支需要被删除。
  • 3、合并完成后,将合并的文件再次上传至github
4、处理冲突

情况1:fast-forward

  • 主干没有任何更新
  • 分支提交新的代码
  • 合并之后删除分支

情况2:合并多个分支时,合并的内容可能会产生冲突

  • 手动解决冲突,提交最新结果 1、去掉 >>>>> == <<<<<保留最终的结果即可 2、再次提交

思考:合并分支分支冲突发生的原因和解决方法??

1、首先主分支是==master==

2、通过==git checkout dev1==创建一个子分支,在子分支上修改或者添加代码,并且提交至子分支==dev1==上。

3、主分支==master==被人修改了,在主分支==master==上通过==git merge dev1==将子分支合并在主分支上

4、这时候冲突已经产生我们要手动解决冲突

5、解决完之后,再次提交主分支上所有的代码。

5、删除分支
  • 代码合并之后要删除子分支
git branch -D dev复制代码
6、提交主干分支

默认我们的代码是放在工作区中,不属于任何分支,只有提交到某个分支上,此文件才属于特定的分支。


三、git-remote

1、绑定密匙

首先注册Github账号。由于你的本地git仓库和github仓库之间的传输是通过SSH加密的,所以需要设置一下:

第一步: 创建SSH Key。

在用户主目录下看看有没有.ssh目录:

如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可以直接跳到下一步。

如果没有,请打开Shell(window下打开git bash),创建SSH Key:

ssh-keygen -t rsa -C "wwml725@163.com"复制代码

你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。

如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

第二步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:

然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:

  • 查看密匙的快捷方式,在命令行输入
cat ~/.ssh/id_rsa.pub 复制代码

2、提交到远程仓库

1、创建文件夹

README.md:这是自述文件,介绍代码的功能和使用方法

.gitignore:将需要忽略的文件名 写在这个文件中,就不会别提交至github中

git 不能提交空文件夹

2、提交到分支的历史区

git add .git commit -m"注释""复制代码

3、查看远程仓库

git remote -v复制代码

4、关联远程仓库

先add commit 推送至分支上,在推送到github上

git initgit commit -m "first commit"git remote add origin github地址 (例如:https://github.com/wwml725/first.gitgit push -u origin master)复制代码

从命令行推送分支上现有的存储库:

git remote add origin https://github.com/wwml725/first.gitgit push -u origin master复制代码

仓库关联之后,再次推送

git push origin master -u    复制代码

这样推送过==u==,下次就能通过==git push==推送了

5、把某个分支上的内容都拉取到本地

git pull origin master(远程分支名称)复制代码

3、在github上发布静态网站

  • 1、在当前项目下建立一个gh-pages的分支
  • 2、将需要发布的内容推送到这个gh-pages分支上
  • 3、在github网站上创建一个仓库
  • 4、将分支上的内容推送至github仓库
  • 5、github会给我们一个在线地址
git checkout -b gh-pagesgit add .git commit -m '添加静态页面地址'git push origin gh-pages复制代码
  • 在settings中可查找到网址+ 文件名即可 (默认会展示文件)

4、更换github地址

注意:地址更新后,从新配置本地仓库,但是总是出问题:经常出现以下错误:

remote: Permission to wwml725/first.git denied to wangwenghui. fatal: unable to access 'https://github.com/wwml725/first复制代码

解决方案: 到控制面板 ----账户安全 ---凭据管理器 ----图片最下面的从保管库中删除----再重新重做一遍修改,添加,提交 ,这是就会再需要登陆git

四、后期补充

  • 分支之间不存在父子关系

一个项目有一个共用分支develop

  • 这个分支上的数据任何人都不能进行修改,要基于这个分支创建一个新的分支,在这个分支上进行开发,编码完成之后确定数据没有问题,再将这个分支与共用分支合并
新建文件夹1.git clone (https://github.com/limin0428/earlyjoy):写自己组长地址2. cd earlyjoy 进入到文件3.git checkout scaffold //切换到scaffold分支 4.git checkout -b 自己名字 //创建并切换到自己的分支上(此时已经在自己分支上)5.修改文件后或者用1.txt测试(注意要一直在自己的分支上作业,并且推送,不要往master推送,推送时候可以看后缀是否是自己分支名)6.git add .7.git commit -m "注释"8.git push origin 自己分支名字以后只需要重复6 , 7 ,8步复制代码

转载于:https://juejin.im/post/5a1e8bd2f265da43133ce994

你可能感兴趣的文章
删除排序数组中的重复元素java实现
查看>>
com.android.tools.fd.runtime.BootstrapApplication
查看>>
[7/N] 论得趣
查看>>
操作DOM
查看>>
amoeba数据库中间件透明实现MYSQL读写分离
查看>>
gradle入门
查看>>
对string类型的扩展
查看>>
gogoprotobuf使用(上)
查看>>
IOS开发—IOS 8 中设置applicationIconBadgeNumber和消息推送
查看>>
HBase–调优篇
查看>>
word的多级列表&自动编号
查看>>
SSH之密钥登陆
查看>>
vmware5.1通过模版部署RHEL6.3之后网卡eth1 修改eth0 的问题
查看>>
批量上传公钥到Linux服务器
查看>>
关于日立存储更换故障硬盘
查看>>
Subversion+Apache 安装配置文档
查看>>
从程序员到技术领导者
查看>>
squid的配置及应用
查看>>
Linux的基本配置
查看>>
java语言基础
查看>>