GitHub指令大全及操作教程

一、简述SVN与GIT区别
SVN:集中式 GIT:分布式
1.SVN:
(1)特点:所有的历史版本都是在中央服务器端上建立的,本地客户端只是一个开发的环境,开发完需要推到服务器上生成历史版本,需要回退到某个版本,也需要从中央服务器上拉取
(2)缺点:必须连接上中央服务器才可以(必须连网)

(3)工作示意图
在这里插入图片描述
2.GIT
(1)概念:所谓分布式,就是每个开发者的本地客户端都是一个完整的仓库,都能记录历史版本信息
(2)特点:可以不需要连网,我们也能生成版本记录,也可以快速回退到某个版本
(3)工作示意图
在这里插入图片描述
3.SVN与GIT区别
(1)集中式只能在中央服务器上记录版本信息,也只能在中央服务器拉取或回退某个版本的信息,这样的前提必须要保证客户端与中央服务器保持连接,必须要连网,而分布式它是把每一个客户端都作为一个全新的单独的仓库,在本地客户点就可以完成版本的创建和回退,可以不需要中央服务器,当然团队合作需要中央服务器,把所有人的信息集中到中央服务器上,只要把中央服务器的最新版本拉取到本地,想看就可以直接看或回退版本,他不需要连网
(2)Git是按照源数据(文件流)来实现文件传输的,而svn是按照文件传输的,所以GIT比svn更快

二、常用指令
注:GIT是linux团队开发的,所以git中的命令大部分都是linux命令
1.先安装GitHub
(1)下载:https://git-scm.com/downloads
(2)安装时默认下一步即可
(3)完成安装,检查是否按照成功有两个方法:
可输入git --version检查版本信息
或者
桌面有键看是否有 (如图紅色框的显示),有即可安装成功在这里插入图片描述
2.基于命令来完成GIT管理
基础命令
如何配置名字、eamil?
$git config --gloabal user,name 'xxx' //设置名字
$git config --gloabal user.eamil 'xxx' //邮箱

ls -l或者ls -a :查看文件目录

-l: 查看当前目录结构 -a:是可以看见所有的:包含隐藏的

cd xxx[路径地址]:进入到指定的文件中(进入的地址可以到对应的操作命令窗口中)

 cd / :表示根目录    cd ./ :切换到当前目录   cd ../ :切换到上级目录

clear:清屏
mkdir:创建文件夹

mkdir text   //创建text文件

touch:创建空文件 再用vi插入

  touch 1.js  创建了1.js文件

vi:向文件中插入或者管理一些内容,再按 i=>进入到插入模式。
ESC+ :WQ :退出内容的插入模式,把刚才的编辑的内容进行保存 ESC+ :q!: 强制退出,当前内容不保存
(一般vi,i ,ESC(就是键盘上的esc退出键),:wq或者:q都是连用的,因为vi就是插入一些内容,i是插入模式,在插入模式下才可以输入内容,插入完成后就会保存,退出)

 举例:如vi 1.js 回车 再按i 显示--插入模式-- 然后写点东西  let a=12; let b=13;conslog(a); 再然后保存:按 i 后 再按esc(退出插入模式)再输入:wq(保存并退出)

echo :向指定的文件中输入(插入)内容,也会顺便创建文件
(特点:会覆盖 重复输入她只保存最新的一条信息)

语法:echo xxx > xxx.txt 或者 echo xxx>>xxx.txt

如:echo 哈哈哈 >2.js //把哈哈哈输入到2.js里面
cat :查看文件中的内容

想查看1.js的内容  :输入 cat 1.js 即可

rm :删除文件或者文件夹
-r 递归删除 -f 强制删除,一旦删除无法还原
rm * :删除所有
rm *.js :删除所有的js
rm node_module -rf: //删除node_module,因为里面有很多文件 所以-r 还可以强制删除,就-rf
cp: 拷贝
高级命令
$git init :创建GIT仓库
$git add -A 或者git add . :把当前工作区修改的内容全部提交到暂存区(可以指定具体提交的文件 $ git add xxx.js)
$ git commit -m'写版本备注':把暂存区中的内容提交到历史区,生成一个历史版本(我们需要写备注信息,声明当前版本的特点)
$ git status 查看当前修改的文件处于哪一个区域 查看版本,对比信息(情况如下:)
紅色:工作区
绿色:暂存区
看不见:已经提交到历史区,三区保持一致了

$git rm --cached xxx.xx :删除当中的某一个
$ git rm --cached . -r :撤销暂存区中所有提交的
(如果删除过程中,发现从暂存区删除的文件,在工作区已经被修改了,只有加上 -f 才能强制从暂存区把内容删除掉)
$git checkout xxx.xx:提交到暂存区一份,把工作区内容改了,但是改的东西不好,想把暂存区上次提交的内容撤销回到工作区(覆盖工作区新写的内容)
特点:暂存区内容没有消息,只是把工作区最新修改的信息给覆盖了,让工作区和暂存区保持一致
$git diff <file> :查看文件DIFF
(比较当前文件与暂存区的文件差异)

 git diff 1.js //比较1.js的不同

git checkout . :代码回滚 (把暂存区内容回滚到工作区(一旦回滚,工作区内容无法恢复))
git reset HEAD . :把当前暂存区的内容回滚到生一个暂存区,目的是为了把上一个暂存区内容回滚到工作区
git reset --hard 版本号 :在历史区中间退到某个版本(强制把暂存区和工作区都变回退后的版本)
history > xxx.txt :把历史操作步骤输出

git log 查看提交记录
git reflog 查看所有的历史记录(包括历史区回滚后)
git commit 提交到历史区
git commit -m'xxx' 提交到历史区
三、GitHub的基础工作流程及命令
我们都知道每一个GIT仓库都有三个区:
工作区:写代码
暂存区:临时存放每一次修改的代码。但是并没有生成历史版本
历史区:存放所有历史版本的地方
那么工作流程到底是怎么样的呢,从无到有的过程 如下:
基本流程:
1)首先创建中央仓库
打开github官网,登录后,先create repository(创建新仓库)
在这里插入图片描述
完成创建,如果是新创建的库,可以先使用一下命令先创建个非空仓库(目的是保证:中央仓库有一个master分支)

echo "# mytest" >> README.md  //添加个记录
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/MNLNG/mytest.git
git push -u origin master 

如果已经有中央仓库了那就不用上述操作直接克隆下来就行
2)创建客户端本地仓库也就是克隆中央仓库的代码
$git clone "远程仓库地址" "本地仓库文件夹名字 :(不写默认是·仓库名字)"

如 $ git clone https://github.com/xxx/2020xxx.git TEST 

下面是一个客户端从克隆代码到添加文件,提交,修改,上传到中央仓库的完整过程
(1).先克隆 两个客户端 A 、B

git clone https://github.com/zhufengpeixun/201802TEST.git TESTA
git clone https://github.com/zhufengpeixun/201802TEST.git TESTB

(2)再在TESTA里面创建文件及内容1.txt TESTB里面创建文件及内容2.txt
(3)cd 到对应客户端目录

cd TESTA 

(4)提交客户端创建的文件

提交前先添加文件

git add .

然后提交

git commit -m'我是A客户端 创建1.txt'

可以查看一下版本

$git log

(5)然后推送,推送前先pull一下

git pull origin master 

然后再提交到远程上

 git push origin master 

(6)各自和中央服务器同步信息

git pull origin master

好了完成哦,是不是很简单,哈哈!

四、提交时可忽略的文件
如##dependencies

 /node_modules

##testing

 /coverage

##production

/build

##misc

.DS_Store 
.env.local .env.development
.env.test .local  
.local  .env.production .local 
npm-debug.log*

yran-debug.log*

yran-error.log* 

.idea

五、团队协作和分支管理
一般在团队中,小项目可能都会采用无分支管理模式,比较简单,其实一般一个分支的管理就足够了,不过也有公司大项目使用多分支来管理,那么就这些情况做一些解析
分支指的是历史区的分支:创建分支就是创建不同的线路,来管理历史版本
(一)无分支管理模式
1.每天工作模式:
第一先pull下来,如果有冲突先处理,然后再把文件add ,commit ,再pull 和push (这里的命令我忽略了 git …的缩写,执行时自己加上就行)
2解决冲突
-非同一行冲突:在提示的冲突命令中同意即可ESC :wq (按下ENTER键即可),如果本地和中央的想要保留中央的那就esc :q强制退出
-同一行冲突:
把想要的保留下来:尝试合并失败,我们需要手动把代码进行合并然后再重新提交
不想保存下来那就esc :q强制退出保留中央仓库的代码
(二)单独分支模式
1.正常的开发和提交,但是所有的操作都是在自己的分支上
2.把自己本地的分支中的内容,合并到自己本地master分支上
$git stash //暂存文件 (分支由更改,不能直接切换分支,需要把修改的内容暂存),
$git checkout master //切换到master分上
$git stash pop //还原暂时存储的内容
$git merge dev //把dev分支合并到master分支上(有冲突就按照之前的冲突规则修改)
注:这些操作是当工作区和暂存区还没有提交到历史版本时,我们实现分支切换防止信息丢失我们先用git stash暂时把他存起来,切换到master时再git stash pop 把之前的暂存的数据还原回来,再把dev 分支合并到master分支上,如果已经提交历史版本,那就不需要暂存,可以直接合并

合并:如果当前是在master分支上写下git merge dev //代表dev合并到master分支上
如果当前在dev分支上,写上git merge dev1 //代表dev1合并到dev分支上

2.创建分支到合并分支的步骤
在创建之前先看看当前存在的分支
$git branch 查看当前存在的分支

  • master "*"代表当前在哪个分支上
    在这里插入图片描述
    上图代表有两个分支
    (1)先创建分支
    git branch dev 创建一个叫做dev的分支
    (特点:创建新分支完成,会把本地的master分支中的内容同步到dev分支上)
    git checkout dev 切换到dev分支上
    git checkout -b dev 创建并切换到这个分支
    (2)完成分支后,提交推送到中央仓库
    git add . -》git commit -m’备注’ -》git pull origin master -》git push origin master
    (3)然后再切换分支,暂存(stash),合并(merge)
    先切换到master分支上再合并
    $git checkout master //切换到master分上
    $git stash pop //还原暂时存储的内容
    $git merge dev //把dev分支合并到master分支上
    如一些冲突
    在这里插入图片描述
    解决思路:先按 esc :wq 再重新push

猜你喜欢

转载自blog.csdn.net/weixin_41262185/article/details/105471897