Java教程

Github学习心得

本文主要是介绍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中内容)

这篇关于Github学习心得的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!