day22(git的简单使用)

git的简单使用

git使一款免费的,开源的分布式 版本控制系统

git 使Linus Torvalds 为了linkus免费更新使用

1、安装

官网下载安装包,通过安装包安装

下载安装,检测是否安装成功:

git --version//返回版本号就成功

或者点击鼠标右键出现git选项也可以检测安装成功

2、三个区

  1. 工作区:自己写的源文件
  2. 暂存区:将要保存的文件,暂时存放、暂存正在开发的代码
  3. 历史区(本地仓库):生成一个版本,只能将暂存区的内容生成版本。上传时只能上传历史区的内容

3、git单机操作⭐

首先要在被管理的文件夹中进行初始化,才能在这个文件夹中使用git命令管理:如新建一个dome文件,在里面打开cmd

选择并进入新建的文件夹,鼠标右键选择Git Bash Here或者直接打开命令行到这个文件

基础流程(可能回进入一个其他的模式,使用输入:q!+ctrl+c退出)

1、git init

  • 在命令行输入git init,初始化文件,会出现一个隐藏的文件加.git,此时代表当前这个文件夹及其以下内容都被git管理了。
  • 在dome建立一个js文件,vscode会显示U文件后缀标记
  • 作用:创建生产暂存区和本地仓库

2、git status

查看文件的状态,红色表示工作区,绿色表示暂存区

branch:分支,master:主分支、commit:提交、Untracked:未知的

3、git add

将工作区的文件提交的暂存区

git add 文件 # 将单独一个文件添加到暂存区(可以为空)
git add . #将当前文件夹的所有文件都添加都暂存区
git add ./文件夹 # 将整个文件夹添加到暂存区(git不管理空文件夹)
git add --all # 将当前文件夹中所有文件和文件夹都添加到暂存区  -  简写:git add .

4、git reset

将暂存区的文件拉回到工作区

git reset HEAD -- 文件 # 将某个文件从暂存区变为源文件
git reset HEAD -- 文件夹/ # 将整个文件夹从暂存区变为源文件
git reset HEAD -- . # 将所有文件从暂存区变为源文件
git reset -- 文件或文件名 #将文件从历史区拉到暂存区

5、git rm --cached <文件或文件名>

直接从暂存区删除文件,有不影响到工作区

6、危险操纵

  • 当执行 “git checkout .” 或者 "git checkout – " 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。
  • 当执行 “git checkout HEAD .” 或者 "git checkout HEAD " 命令时,会用
    HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

7、git commit

将暂存区文件提交到本地仓库

git commit -m "版本号或注解信息"#将文件从暂存区提交的到本地创库

补充其他

git commit -a -m "版本号或注册信息"
  • 其他功能如-m参数,加的-a参数可以将所有已跟踪文件中的执行修改或删除操作的文件都提交到本地仓库,即使它们没有经过git add添加到暂存区,注意,
  • 新加的文件(即没有被git系统管理的文件)是不能被提交到本地仓库的。建议一般不要使用-a参数,正常的提交还是使用git add先将要改动的文件添加到暂存区,再用git commit 提交到本地版本库。
git commit --amend -m "修改信息"#修改最后一次提交的信息

8、git log

查看版本信息

git log#查看提交目录及版本信息
git log --oneline #简洁的日志信息及版本号

9、git config

如果是**第一次提交,**需要配置提交者信息,推荐和github的账号邮箱一致

# git config  user.name 你的目标用户名
# git config  user.email 你的目标邮箱名

# 使用--global参数,配置全局的用户名和邮箱,只需要配置一次即可。推荐配置github的用户名和密码
git config  --global user.name  happyChengfeng
git config  --global user.email 2623023722@qq.com

# 查看配置信息
git config --list

#初始化指定的配置项
git config --unset --global user.email
git config --unset --global user.name

10、版本回退

返回指定版本(还可以使用revest)

git reset --hard HEAD^ # 有几个上档键就回退几个版本
git reset --hard 历史版本号 #将代码回退到指定的版本号,重置所有区
git reset --hard head~1 #将版本退回到上一次提交,数值是可以改变的
git reset --sort 版本号 #只重置历史区
git reset --mixed 版本号 #重置历史区和暂存区
git reset 版本号 #效果和--mixed一致

11、git diff

查看每次提交的内容的不同

git diff #查看工作区与暂存区的不同
git diff --cached# 查看暂存区与仓库区的不同
git diff HEAD# 查看工作区与仓库区的不同,HEAD表示最新的那次提交
git diff c265262 de4845b# 查看两个版本间的不同,使用git log --oneline获取版本号

11、创建空文件加管理

为了让git能管理一个空文件夹:

在空文件夹中新建文件:.gitkeep,这是个约定熟成的文件,这个文件没有实际意义,就是为了占位,让空文件夹能被管理的标识,以后要在文件夹中写文件的时候,这个文件可以被删除

12、创建被忽略文件

让某些文件或者文件夹被忽略管理:

在和.git同级的位置,新建文件:.gitignore,在这个文件中书写要忽略的内容:

直接写文件名,代表要忽略的是哪个文件
写文件夹路径,表示要忽略的是哪个文件夹
*.后缀,表示要忽略的是所有后缀为指定后缀的文件

4、git分支操作

  • 在工作过程中,经常会碰到多任务并行开发 的情况,使用分支就能很好的避免任务之间的影响。
  • 其他版本工具比如svn,cvs中也有分支这个概念,但是这些工具中的分支操作非常的慢,形同摆设。

1、创建分支

git branch 分支名 #创建分支,分支中的代码,在创建时与当前分支的内容完全相同。
  • git在第一次提交时,就有了一个叫master的主分支。
  • 注意,不能在分支下面创建分支

2、查看分支

git branch #查看所有的分支
  • 在当前分支的前面会有一个*
  • 在git中,有一个特殊指针HEAD,永远会指向当前分支

3、切换分支

git checkout 分支名 #切换到指定的分支
git checkout -b 分支名 #创建并转到此分支

4、删除分支

Git会自行负责分支的管理,所以当我们删除一个分支时,Git只是删除了指向相关提交的指针,但该提交对象依然会留在版本库中。

git branch -D 分支名 #删除此分支
  • 注意:不能在当前分支删除当前分支,需要切换到其他分支才能删除。
  • 注意:master主分支是可以删除的,但是不推荐那么做。

5、恢复删除的分支

git branch 分支名 分支id
#如果记不住分支名和id,可以通过reflog命令进行查找,如
git reflog #显示所有版本信息和历史提交信息

6、分支合并

git merge 分支名 #将其他分支合并到当前的分支
  • 必须在master主分支中执行git merge devdev分支中的代码合并到master分支

7、合并冲突

  • 对于同一个文件,如果有多个分支需要合并时,容易出现冲突。
  • 合并分支时,如果出现冲突,只能手动处理,将提示冲突的内容删除,再次提交,一般的作法,把自己的代码放到冲突代码的后面即可。

5、远程仓库

github

  • git是一个版本控制工具。
  • github是一个代码托管平台,开源社区,是git的一个远程代码仓库。

1、git clone

  • 作用:克隆远程仓库的代码到本地

  • git clone [远程仓库地址]
    
  • 此时会将远程仓库的文件夹下载到操作git时新建的dome文件夹

  • git clone [远程仓库地址][本地项目名]
    #git克隆默认会使用远程仓库的项目名字,也可以自己指定。需要是使用以下命令
    

2、git push

  • 作用:将本地仓库中代码提交到远程仓库

  • git push 远程仓库地址 分支名 
    git push 远程仓库地址 本地分支名:远程分支名
    git push -u 远程仓库地址 分支名 #使用-u后第二次上传只需要git push就可以
    
  • 首次推送远程需要会到网页面输入用户名和密码xxz2156124

3、git pull

  • 作用:将远程的代码下载到本地、或者是本地与远程同步。意义都一样

  • 通常在push前,需要先pull一次。进行一次同步

  • git pull #不用怀疑,就这,没别的参数
    

4、git remote

每次push操作都需要带上远程仓库的地址非常的麻烦,我们可以给仓库地址设置一个别名

#设置别名
git remote add 仓库别名 仓库地址
git remote add origin git@github.com:jepsongithub/test.git
#删除别名
# 删除jepson这个别名
git remote remove jepson# git clone的仓库默认有一个origin的别名

5、其他冲突

两个人同时操作同一个分支,提交的时候会有先后顺序,先提交的人正常提交了,后一个人提交的时候会产生冲突。因为git规定,每次提交必须是在原来的版本基础上,但是第二个人在提交的时候,在远程已经有了第二个版本,所以第二个人相当于从第一个版本向第三个版本提交。

  1. 使用命令让本地和远程同步:

    git pull 远程仓库地址 分支名
    

    然后手动解决文件冲突

  2. 开辟新的分支,然后进行分支合并

    git fetch origin master:tmp # 使用 fetch 获取远程最新信息并开辟一个临时分支
    git diff tmp # 将当前分支和远程分支进行对比
    git merge tmp # 将临时分支合并到当前分支
    

6、ssh免密登陆

git支持多种数据传输协议:

  • https协议:https://github.com/jepsongithub/test.git 需要输入用户名和密码
  • ssh协议:git@github.com:jepsongithub/test.git 可以配置免密码登录

配置免密登陆:

注意:这些命令需要在bash中敲

  • 1 创建SSH Key:ssh-keygen -t rsa
  • 2 在文件路径 C:\用户\当前用户名\ 找到 .ssh 文件夹
  • 3 文件夹中有两个文件:
    • 私钥:id_rsa
    • 公钥:id_rsa.pub
  • 4 在 github -> settings -> SSH and GPG keys页面中,新创建SSH key
  • 5 粘贴 公钥 id_rsa.pub 内容到对应文本框中
  • 5 在github中新建仓库或者使用现在仓库,拿到git@github.com:用户名/仓库名.git
  • 6 此后,再次SSH方式与github“通信”,不用输入密码确认身份了

6、建立项目文件

1、dist文件,压缩处理后的文件

2、src文件,项目文件,插件,jscss等等.

3、static文件,不需要处理的文件,如images,video文件

7、傻瓜式使用(不推荐)

  1. 建立英文名文件
  2. 右击 :git bash here 来打开特殊的命令行,或者直接打开命令行到这个文件
  3. 输入:git clone+远程仓库地址 +回车;
  4. 关闭bash,进入下好的主分支文件里面,再打开bash
  5. 输入:git remote add origin 远程仓库地址+回车
  6. 输入:git status +回车;可以查看管理的文件的状态
  7. 切换到自己的子分支:git checkout 远程分支名+回车;或者git checkout -b 本地分支+回车;在没有自己需要的分支时。
  8. 输入:git pull+回车 进行本地和远程的同步
  9. 将自己的项目文件拉进这个文件夹,或复制。
  10. 再次输入:git status+回车,能看到cmd里自己的项目文件夹名为红色。
  11. 再输入:git add .+回车 添加到暂存区
  12. 再次输入:git status+回车,能看到cmd里自己的项目文件夹名为绿色。
  13. 然后输入:git commit -m "自己设置的版本号" +回车 暂存区转到历史区
  14. 输入:git log+回车;查看所有版本信息
  15. 输入:git push -u origin 本地分支名:远程分支名+回车;开始上传;首次提交要密码
  16. 之后若再次提交,就重复8到12步,等确定确定后再执行13到15步,且第15步省略为git push
上一篇:函数 day22


下一篇:day22 1.函数的基本使用 2.函数的参数 3.内置函数