ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Github学习心得

2021-10-05 23:04:23  阅读:159  来源: 互联网

标签:文件 git 仓库 学习心得 暂存区 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

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

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

  • 克隆已有项目

    1. 输入git clone [url]

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

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等同于^的数量

git checkout [文件1] [文件2]... # 恢复暂存区文件到工作区
git checkout [commithash] [文件1]... # 将指定commit的文件恢复到工作区

git reset --hard # 同时重置HEAD,暂存区与工作区
git reset --mixed # 同时重置HEAD,暂存区(默认)
git reset --soft # 只重置HEAD

git diff # 查看暂存区与工作区的不同
git diff --cached # 查看暂存区与HEAD的不同
git diff HEAD # 查看工作区与HEAD的不同
git diff [commithash] # 将工作区内容与某次commit进行比较

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

暂存区管理

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 # 查看暂存区状态

本地库操作

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

git commit 规范

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

type一般包括

  • feat 新功能
  • fix 补修bug
  • docs 修改文档
  • style 格式化代码结构(不影响原代码正常运行)
  • refactor 重构代码(更改代码,但逻辑结构与原有结构一致)
  • chore 构建过程或辅助工具改动

分支管理

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)

远程库操作

git clone [远程库地址] # 将远程库克隆到本地目录下

git fetch [远程库地址] # 获取远程库所有改动

git pull [远程地址别名] [本地分支名] # 等同于fetch+merge

git 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

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

之后一路点击回车即可


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

标签:文件,git,仓库,学习心得,暂存区,Github,远程,分支
来源: https://www.cnblogs.com/DreamW1ngs/p/15369873.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有