ps:所有东西都是个人理解
文章目录
- 一、git是什么,它用来做什么?
- 二、相关知识库
- 2.1 简单的linux指令
- 2.2 git配置指令
- 2.3 git常见的指令
- 2.3.1 Git的上传原理
- 2.3.2 版本回退相关内容
- 2.4 设置远程地址,本地上传到github
- 2.4.1 ssh相关原理
- 2.4.2 设置远程地址并配置
一、git是什么,它用来做什么?
都知道,在公司里面往往一个项目会由多个人共同协同编写,所以需要一个可以文件互通的渠道,之前用的是svn或者cvs。这个svn它就相当于是有个中央服务器,开发人员把代码写完之后提交到中央服务器。git就相当于是每个开发人员的主机上都可以保存文件,每一个节点都有完整的代码库。
对于个人来说,利用git来管理项目也很不错,比如说,我们需要修改一个功能代码,改之后发现不能用,这时候我们就可以利用git reset功能来恢复到前一个版本,然后后面觉得这个版本有用了又可以回到这个版本。所以fei chang you y
二、相关知识库
2.1 简单的linux指令
ls #查看当前目录
cat #查看文件内容
cat 文件1 文件2… > 汇总文件 #可以将前面的文件内容汇总到汇总文件中touch #创建文件
mkdir #创建文件夹rm a.txt #删除文件
rmdir a #删除文件夹vi 文件名 #vi编辑器
pwd #显示当前操作的路径grep [选项] [模式] [文件] #搜索
# 这里的选项可以是 -n 显示行号 -i 不区分大小写 -v 取反,即不包含需要的内容的行cp a b #复制文件,将a文件夹整体复制到b文件夹下
cp a/* b #将文件夹a下的所有文件都复制到b文件夹下mv a b #将a文件夹整体移动(剪切)到b文件夹下
vi编辑器,有三种模式:普通模式,插入模式以及命令模式。
普通模式:用于浏览文件、移动光标、删除以及复制等操作。
插入模式:用于输入文本,像常规文本编辑器一样编辑文件内容。
命令模式:用于执行文件操作命令,如保存、退出、查找和替换等。
保存文件
#普通模式下输入
:w #保存当前文件
:w Newfie.txt #将文件保存到新的文件中
:q #仅退出文件
:wq #保存并退出
:q! #强制退出(不保存)
2.2 git配置指令
设置和查看用户邮箱和用户名
git config —global user.name "设置的用户名" #设置用户名
git config —global user.name #查看用户名
git config —global user.email "设置的邮箱"
git config —global user.email #查看邮箱
初始化git本地仓库
git init
2.3 git常见的指令
2.3.1 Git的上传原理
git将提交文件的工作步骤区间分为工作区、暂存区以及仓库。从工作区到暂存区。
git ls-files -s #查看暂存区的文件列表
git ls-tree -r HEAD #查看仓库当前版本的文件列表
使用git add指令提交文件,从暂存区到仓库,使用的是git commit。其中从工作区到暂存区,我们可以一个一个文件上传,也可以整个文件夹上传,而git commit指令是一次性将暂存区中的所有修改内容均上传到仓库中。如下图所示。从这里我们也可以看出暂存区的作用是什么。svn中有一个概念叫做原子性提交,即要么这个操作内所有指令均操作,要不就均不操作。这里的暂存区就类似提交前的预览区,提供给用户试错成本。
git add 文件1 #将文件1提交到暂存区
git add . #将所有文件提交到暂存区
git status #查看当前git各个步骤区间文件状态
Git commit -m “对于本次操作的描述" #将暂存区的所有文件提交到仓库中,这里的-m是指messagegit log #查看历史提交记录
# git log [options] 这里的options 可以是
# —all 显示所有分支
# —pretty=oneline 将提交信息显示为一行
# —abbrev-commit 使得输出的commitId更简短
# —graph 以图的形式显示
2.3.2 版本回退相关内容
git reset
git reset的作用:
- 撤销暂存区的更改:取消已加入暂存区(即staged)的文件。
- 撤销工作目录的更改:将工作目录中的文件恢复到某个指定的提交状态。
- 修改分支历史:通过改变分支的HEAD指针,来修改历史提交。
1) 文件的reset
#git reset <file> 可以将用git add添加到暂存区的文件
2)版本的reset
git reset [选项] 回退的版本号
git reset —hard 回退的版本号 #这个版本号可以去git log中寻找
# —hard 重置位置的同时,直接将working Tree工作目录、index暂存区及repository都重置成目标reset节点的内容,所以效果看起来等同于清空缓存区和工作区。
# —soft 重置位置的同时,保留working Tree工作目录和Index暂存区的内容,只让repository中的内容和reset目标节点保持一致,因此原节点和reset节点之间的【差异变更集】会放入Index暂存区中(Staged files)。所以效果看起来就是工作目录的内容不变,暂存区原有的内容也不变,只是原节点和Reset节点之间的所有差异都会放到暂存区中。
# —mixed(默认) 重置位置的同时,只保留working Tree工作目录的内容,但会将Index暂存区和Repository中的内容更改和reset目标节点一致,因此原节点和Reset节点之间的所有差异都会放到暂存区中。
2.4 设置远程地址,本地上传到github
这个首先需要连接本地与你的github仓库。这里选择的是ssh连接。
2.4.1 ssh相关原理
ssh登录原理
首先需要生成 ssh key
1) 创建ssh key
ssh-keygen -t rsa -C "github邮箱"
2) pbcopy 将后面文件里面的内容复制到剪切板,并开始服务,进行相关配置
#把生成的公钥复制在粘贴板上
pbcopy < ~/.ssh/id_ed25519.pub
#开启ssh-agent服务
eval "$(ssh-agent -s)”
# 设置配置文件,macOS 10.12.2以上的版本
touch ~/.ssh/config
#将SSH私钥存储在密钥链中。
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
将下述文本写入config文件中:
Host github.comAddKeysToAgent yesUseKeychain yesIdentityFile ~/.ssh/id_ed25519
3) 将公钥写入github ssh key中
2.4.2 设置远程地址并配置
#查看当前远程地址
git remote -v
#添加新的远程地址
git remote add <name> <new-remote-url>
#修改远程地址
git remote set-url <旧remote的名字> <new-remote-url>
#删除远程地址
git remote remove <name>#将本地的分支上传到远程的分支
git push [-f] <远程主机名> <本地分支名>:<远程分支名> #选项-f是强制覆盖的意思
这里的密码是从github上搞下来的token。
复制ssh远程地址,从仓库中提取。
2.5 添加文件至忽略列表
在文件夹下建立.gitignore文件。在文件里面写要忽略的文件。
2.6 git分支相关内容
#查看现有分支 view-existing-branch
git branch#创建新分支 — create a new branch
git branch <new-branch-name>#切换分支 switch branch
git checkout <target-branch-name>#切换并创建分支(如果不存在) —switch and create branch(if not exist)
git checkout -b <branch-name>#分支合并 一个分支上的提交可以合并到另一个分支上 <merge the target branch into the current branch>
git merge <branch-name> #删除分支 —delete branch
git branch -d <branch-name> #会做各种检查
git branch -D <branch-name> #直接强制删除,不做任何检查 这个使用的场景是,你想要删除没有merge掉的分支,就是你修改的内容没有添加到主分支上的内容#显示分支信息
git branch -vv
#功能1: 显示远程跟踪分支的信息,即本地分支与远程分支的对应情况
#功能2: 显示每个分支的最新提交信息
#功能3: 显示当前所在分支,’*’#将当前分支绑定到远程分支 —connect current local branch with the corresponding remote branch
git branch —set-upstream-to <远程仓库名>/<远程仓库分支名>
2.7 clone 克隆仓库到本地
git clone +远程地址名 #它默认是克隆下所有分支,想去特定的分支直接git checkout <分支名>就行#将远程地址的更新抓取到本地
git fetch
#将抓取到的更新合并到当前分支
git merge origin/master#抓取并合并到当前分支
git pull
git merge合并的快进模式