阅读 117

Github学习心得

Github学习心得

Git简介

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理,也是[Linus Torvalds](https://baike.baidu.com/item/Linus Torvalds/9336769)为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。

可以前往Git官网(https://git-scm.com)安装对应系统的Git

安装成功后进入终端(Terminal),键入git --version会显示出对应的git版本信息

Git运作的整体架构

Git本地的三个工作区域,工作空间(Working Space)、暂存区(Stage/Index)、本地仓库(Repository/Git Repository)。若再加上远程仓库(Remote Directory),大致关系如上图所示

  • Workspace:工作区,代码增删修改即时更改的区域

  • Index/Stage:暂存区,用来临时更改工作区的代码改动,本质上是一个文件(可以视为多个文件二进制码集合成的一个黑盒子)

  • Repository:本地仓库,存放本地commit内容的位置(存在多个历史记录的版本),其中HEAD默认指向了最新放入仓库的commit

  • Remote:远程仓库,远端托管代码的服务器是实现多人快速搭建项目的核心

暂存区和本地仓库存储内容都在仓库目录下的.git隐藏文件夹

配置指令

git config --list 查看当前git配置

git本地仓库配置默认存储在用户目录\.gitconfig文件下
git系统用户配置默认存储在Git安装目录\etc\gitconfig

可以采用以下方式进行用户的名称以及邮箱配置

bash

git config [--global] user.name [用户名称]
git config [--global] user.email [用户邮箱]

git config -l # 查看配置git config --[global/system] --list

每次git进行提交时都会使用该信息

工作流程

  1. 工作空间添加修改删除文件

  2. 将需要进行版本管理的文件放入暂存区

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

Git 仓库搭建

项目搭建

  • 创建新项目

    1. 创建项目的目录(即对应的文件夹,最好不要包括中文)

    2. 进入目录后,输入git init

  • 克隆已有项目

    该url可以从任意远程仓库中获取,如下图为Github与Gitee中获取仓库链接的地方

    1. 输入git clone [url]

Git文件操作

文件状态

  • Untraked:未跟踪状态,此刻并没有被加入到git仓库,可以通过git add使它的状态变为Staged

  • Unmodify:如果这个文件在库中留有副本,且这与本地库中一致 则为该状态,此时可以使用对它修改使其变为Modified,也可以使用git rm使其重新变为Untracked(如果此时add,不会使其变为Staged

  • Modified:如果这个文件在库中留有副本,且这与本地库中不一致 则为该状态,可以使用git checkout用本地库的文件代替工作区文件(可以看作修改的一种撤销操作)使其状态变为Unmodify,也可以使用git add使其状态变为Staged

  • Staged:暂存状态,可以使用git commit将暂存区内容提交到本地库中,使得文件变为Unmodify,或者使用git reset HEAD [文件名称]让暂存区内容回滚(相当于从未add过了),使得该文件变为Modify

忽略文件

建立.gitignore文件,使得一些文件不被纳入版本控制范围(例如使用git add .命令时)、

文件规则

  1. #为注释符

  2. 可以使用 linux通配符

  3. !代表例外规则,指该文件符合已指定规则,但不想被忽略(即优先级高于指定规则)

  4. /放在最前面,表示忽略指定路径下的文件

  5. /放在最后面,表示忽略该目录下的子目录内的文件

Git命令

工作区操作

HEAD往往指向当前所在分支中的最后一次commitHead^^^...代表过去前的第X个版本,X等同于^的数量

bash

git checkout [文件1] [文件2]... # 恢复暂存区文件到工作区git checkout [commithash] [文件1]... # 将指定commit的文件恢复到工作区git reset --hard # 同时重置HEAD,暂存区与工作区git reset --mixed # 同时重置HEAD,暂存区(默认)git reset --soft # 只重置HEADgit diff # 查看暂存区与工作区的不同git diff --cached # 查看暂存区与HEAD的不同git diff HEAD # 查看工作区与HEAD的不同git diff [commithash] # 将工作区内容与某次commit进行比较

如果名称aa既是某个分支名,又是某个文件名,需要使用--来说明这是一个文件路径

暂存区管理

bash

git add [文件1] [文件2] ... # 向暂存区中添加指定文件git add [目录1] [目录2] ... # 向暂存区中添加指定目录git add . # 向暂存区添加当前目录下所有文件git rm [文件1] [文件2] ... # 向暂存区中添加指定文件git rm --force # 强制删除git rm --cached # 删除暂存区中的文件,但不对工作区改动git mv [Source] [Destination] # 移动文件git status # 查看暂存区状态

本地库操作

bash

git commit -m [备注信息] # 提交暂存区到本地仓库git commit -a # 可以把未进行add命令的修改一并提交到本地库git commit # 可以用编辑器对此次提交进行更细致的备注

git commit 规范

dts

<type>(<scope>): <subject>// 空行<body>// 空行<footer>

type一般包括

  • feat 新功能

  • fix 补修bug

  • docs 修改文档

  • style 格式化代码结构(不影响原代码正常运行)

  • refactor 重构代码(更改代码,但逻辑结构与原有结构一致)

  • chore 构建过程或辅助工具改动

分支管理

bash

git branch [新分支名] # 创建新分支git branch -v # 显示本地所有分支git branch -r # 显示远程所有分支git branch -a # 显示本地远程所有分支git branch -d [分支名] # 删除指定分支 D为强制删除git checkout [分支名] # 切换到指定分支git checkout -b [新分支名] # 创建并切换到新分支git merge [分支名] # 合并指定分支到当前分支

分支切换时,对应的工作区和暂存区也会被切换

冲突处理

可以参考博客(https://blog.csdn.net/qq_27905183/article/details/78575247)

远程库操作

bash

git clone [远程库地址] # 将远程库克隆到本地目录下git fetch [远程库地址] # 获取远程库所有改动git pull [远程地址别名] [本地分支名] # 等同于fetch+mergegit remote -v # 显示远程地址别名git remote add [远程地址别名] [远程地址] # 添加远程地址git push [远程地址别名] [本地分支名] # 上传本地分支到远程仓库git push --force # 强制推送git push -all [远程地址别名] # 将本地所有分支推送到远程仓库

Git track

其实在从远程分支分出来的分支都是跟踪分支(track),当对该分支进行 push 和 pull 时,如果该分支和远程分支同名,git会知道推送到远程哪个分支,从哪个远程分支同步到本地分支。每次克隆一个仓库时,本地都会新建一个master分支来track 远程的origin/master。如果不同名,我们需要人为指定 git push origin branch_name

Github

Gitee类似,且为中文这里就不详细介绍了

是一个开源且免费的远程仓库,可以托管代码,便于实现项目的团队开发

网址:https://github.com/

创建远程仓库

点击New repository创建自己的远程仓库

设置仓库属性

Repository name中可以设置自己的远程仓库名称,Description中添加对于仓库的描述,Public/Private决定了仓库内容是否被公开(Private的仓库不可以设为静态网页供他人访问)

常常还会✔上Add a README file为自己的仓库建立一个介绍文档,让访问者更加迅速、便捷地了解到项目内容

设置绑定本机SSH密钥

这步可以实现免密码登录,当本机与远程仓库进行文件传输时,远端服务器会用已存储的公钥进行检测,如果有匹配的私钥则可以免密传输

生成SSH密钥

默认密钥生成在本地用户目录\.ssh
其中私钥为id_rsa,公钥为id_rsa.pub

bash

ssh-keygen -t rsa # 生成本机ssh密钥

之后一路点击回车即可


下图是Github与Gitee中添加SSH公钥的面板(添加id_rsa.pub中内容)


__EOF__

  • 本文作者: DreamW1ngs

  • 本文链接: https://www.cnblogs.com/DreamW1ngs/p/15369873.html


文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐