git

一.工作区、暂存区、和版本库

  • 工作区:能看到的目录
  • 暂存区:交给git管理的文件
  • 版本库:master等分支,用于控制版本
  • 本地仓库:存放本地的文件
  • 远程仓库:存放远程文件

image-20210714143239040

  • 图中的 objects 标识的区域为 Git 的对象库,实际位于 ".git/objects" 目录下,里面包含了创建的各种对象及内容。
  • 当对工作区修改(或新增)的文件执行 git add 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
  • 当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中

二.基本操作

Git 的工作就是创建和保存你项目的快照及与之后的快照进行对比。

Git 常用的是以下 6 个命令:git clonegit pushgit addgit commitgit checkoutgit pull,其流程如下

image-20201004125656286

说明:

  • workspace:工作区
  • staging area:暂存区/缓存区
  • local repository:或本地仓库
  • remote repository:远程仓库

1.配置Git

首先在本地创建ssh key;

$ ssh-keygen -t rsa -C "your_email@youremail.com"

后面的your_email@youremail.com改为你在github上注册的邮箱,之后会要求确认路径和输入密码,我们这使用默认的一路回车就行。成功的话会在~/下生成.ssh文件夹,进去,打开id_rsa.pub,复制里面的key

在github账号内添加SSH Key,内容就是上面复制的key

显示当前git信息

$ git config -l

2.上传

1.创建本地仓库

git init

2.把文件夹放入暂存区

git add .

3.提交到本地仓库

git commit -m "提示信息"

4.连接远程仓库

git remote add origin <server>    //origin为远程仓库的名称  server为远程仓库链接

5.真正提交到远程仓库

git push -u repository master

3.下载

克隆到本地,直接下载到本地,或者使用下面命令

git clone 链接

4.分支

  • 查看所有分支.
git branch -a
  • 创建一个叫做"feature_x"的分支,并切换过去:
git checkout -b feature_x
  • 切换回主分支:
git checkout master
  • 删除本地分支
git branch -d feature_x
  • 删除远程分支
git push origin -d feature_x

5.分支与合并

  • 获取远程仓库
git pull   //其实是fetch之后再合并,但是一般还要手动merge
git fetch repository
  • 然后合并
git merge repository/分支
  • 在合并改动之前,你可以使用如下命令预览差异
git diff <branch1> <branch2>

6.远程仓库操作

以github作为远程仓库操作流程,gitee也一样,如果同时要关联两个远程仓库,他们的名字不能一样

image-20201004142433312

  • 本地Git仓库和GitHub仓库通过SSH加密连接
$ ssh-keygen -t rsa -C "youremail@example.com"

后面的 your_email@youremail.com 改为你在 Github 上注册的邮箱,之后会要求确认路径和输入密码,我们这使用默认的一路回车就行。

成功的话会在 ~/ 下生成 .ssh 文件夹,进去,打开 id_rsa.pub,复制里面的 key

回到 github 上,进入 Account => Settings(账户配置)。把key加入到SSH中

  • 添加远程仓库
git remote add [repository] [url]
  • 查看当前的远程仓库
git remote    #执行时加上 -v 参数,你还可以看到每个别名的实际链接地址。
  • 提取远程仓库
git fetch    #从远程仓库下载新分支与数据
git merge    #从远端仓库提取数据并尝试合并到当前分支
  • 推送到远程仓库
git push [alias] [branch]
  • 删除远程分支
git remote rm [别名]
  • 修改远程仓库名
git remote rename old_name new_name  # 修改仓库名

7.杂项

  • 命令用于查看在你上次提交之后是否有对文件进行再次修改。
git status     #-s  显示变更的文件名
  • 比较文件的不同
git diff    #比较缓冲区和工作区的差异
git diff --cached    #比较已缓存的改变
git diff [branch1] [branch2]    #比较两次提交之间的差异
  • 回退版本
git reset HEAD^        # 回退所有内容到上一个版本  
git reset HEAD^ hello.php  # 回退 hello.php 文件的版本到上一个版本  

- HEAD 表示当前版本
- HEAD^ 上一个版本
- HEAD~0 表示当前版本
- HEAD~1 上一个版本
- HEAD^2 上上一个版本

简而言之,执行 git reset HEAD 以取消之前 git add 添加,但不希望包含在下一提交快照中的缓存

  • 删除文件
git rm <file>    #将文件从暂存区和工作区中删除  -f 强制删除
git rm --cached <file>    #只删除缓存区的文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值