当前位置:   article > 正文

Git总结_this key is not known

this key is not known

Git总结 附:SSH配置 Linux命令

Git配置

所有的配置文件,其实都保存在本地!

#查看系统config        git config --system --list  
#查看当前用户global配置 git config --global  --list
  • 1
  • 2

Git相关的配置文件位置:

#Windows

1.Git\etc\gitconfig

Git 安装目录下的 gitconfig --system 系统级

2.C:\Users\Administrator\ .gitconfig

只适用于当前登录用户的配置 --global 全局

#MAC

1.此处为 open ~/.gitconfig

2.MAC隐藏文件可视化

defaults write com.apple.finder AppleShowAllFiles TRUE
  • 1

DEA中集中Git

1.新建项目,绑定git

将我们远程的git文件目录拷贝到项目中即可!

2.使用IDEA操作git,提交项目

方案一:Version Control 版本控制 日志(左下角)

可以直接用命令行输入指令git add . git commit git push

方案二:Commit Changes 提交界面中勾选上传文件即为git add指令 commit为提交到本地仓库 (右上角图标) Tips:取消面板设置勾选

如果文件提交后要修改,修改以后右键文件添加到暂存区,git commit,git push。

3.提交测试

设置用户名与邮箱(用户标识,必要)

当你安装Git后首先要做的事情是设置你的用户名称和e-mail地址。这是非常重要的,因为每次Git提交都会使用该信息。它被永远的嵌入到了你的提交中:

创建与查看
git config --global user.name "kuangshen"  #名称
git config --global user.email 24736743@qq.com   #邮箱
删除用户名与邮箱
git config --global --unset user.name 删除用户名
git config --global --unset user.email 删除邮箱
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

只需要做一次这个设置,如果你传递了–global 选项,因为Git将总是会使用该信息来处理你在系统中所做的一切操作。如果你希望在一个特定的项目中使用不同的名称或e-mail地址,你可以在该项目中运行该命令而不要–global选项。总之–global为全局配置,不加为某个项目的特定配置。

Git代码

仓库的建立
# 在当前目录新建一个Git代码库
$ git init
# 新建一个目录,将其初始化为Git代码库
$ git init [project-name] //比如可以在桌面上创建一个文件夹
# 下载一个项目和它的整个代码历史
$ git clone [url]

使用步骤
#git status [filename] //文件名称 查看指定文件状态
#git status 查看所有文件状态
# git add .  添加所有文件到暂存区
# git commit -m "消息内容"   提交暂存区中的内容到本地仓库 -m 提交信息
# git push 上传到远程仓库

时光倒流:
git log //现实所有提交过的版本信息
git reflog//不仅可以看到版本信息也可以看到commit记录以及reset操作记录
git reset --hard 版本代码//可以回到对应版本

分支
本地
git branch 分支名 //新建分支
git branch -v   //查看分支
git checkout 分支名 //切换分支
git merge 分支名 //把指定的分支合并到当前分支上
git branch -d 分支名 //删除分支
远程
git branch -r //列出所有远程分支
git push origin --delete 分支名 //删除远程分支

拉取远程仓库
git pull = git fetch + git merge
1、将远程指定分支 拉取到 本地指定分支上:
git pull origin <远程分支名>:<本地分支名>
2、将远程指定分支 拉取到 本地当前分支上:
git pull origin <远程分支名>
3.将与本地当前分支同名的远程分支拉取到本地当前分支上
git pull //(Alreadly up to data最新)
方案二
git fetch 拉取远端代码
git merge 分支名 //把指定的分支合并到当前分支

后续问题
1.当文件已经上传后如何修改:可以直接在工作目录下修改,然后查看状态会有修改的信息,重复上传步骤。

2.当文件名被修改如何上传:
# 改名文件,并且将这个改名放入暂存区
git mv [file-original] [file-renamed] //源文件名 修改后的文件名
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
Git分支

在版本控制过程中,同时推进多个任务,我们可以创建每个任务的单独分支,分支可以理解为副本,开发自己的分支的时候不会影响主线分支的运行(分支底层就是指针的引用)

本地
git branch 分支名 //新建分支
git branch -v   //查看分支
git checkout 分支名 //切换分支
git merge 分支名 //把指定的分支合并到当前分支上
git branch -d 分支名 //删除分支

远程
git branch -r //列出所有远程分支
git push origin --delete 分支名 //删除远程分支
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
分支合并冲突
分支合并时,两个分支在同一个文件的同一个位置有两套完全不同的修改,GIt无法替我们决定使用哪一个,必须人为决定新代码内容
  • 1

1753335-20200624093315151-919838716

忽略文件的配置
忽略某些文件时,需要编写.gitignore;(gitee远程仓库在创建时可以选择)
.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!
忽略文件的原则是:
忽略操作系统自动生成的文件,比如缩略图等;
忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在gitee上创建了自己的仓库clone到本地,将文件添加到.git的配置文件之下即可git push上传到自己的仓库当中

Git流程

Git本地有三个工作区域:

工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。

如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。

文件在这四个区域之间的转换关系如下:

  • Workspace:工作区,就是你平时存放项目代码的地方
  • Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息(暂存)
  • Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
  • Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

1、在工作目录中添加、修改文件;

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

3、将暂存区域的文件提交到git仓库。

因此,Git管理的文件有三种状态:

已修改(modified),已暂存(staged),已提交(committed)

图片

文件的四种状态

版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。

  • Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
  • Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
  • Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改 !
  • Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified

配置SSH以及相关问题

步骤
1.cd ~/.ssh //看电脑中是否存在ssh文件
================================
存在:
open ~/.ssh
cat id_rsa.pub    //打开id_rsa.pub文件,复制密钥
不存在:
ssh-keygen -t rsa //创建ssh文件 后面一直回车即可 ras加密官方推荐
open ~/.ssh
cat id_rsa.pub    //打开id_rsa.pub文件,复制密钥
效果图如下:
zoumaoji@zoumaojideMacBook-Pro ~ % ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/zoumaoji/.ssh/id_rsa):
Created directory '/Users/zoumaoji/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/zoumaoji/.ssh/id_rsa
Your public key has been saved in /Users/zoumaoji/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:5/0spzQACdZjvehRtFSWh4eRnsCqAd04y+A3T50swpI zoumaoji@zoumaojideMacBook-Pro.local
The key's randomart image is:
+---[RSA 3072]----+
|     .o+ +o.+*   |
|    o.+.=o=o= o  |
|   . * +oB.= +   |
|    E O *.= o    |
|     o OSoo      |
|      . oo o     |
|          . +    |
|           ..+.  |
|            .+o  |
+----[SHA256]-----+
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

zoumaoji@zoumaojideMacBook-Pro ~ % ssh -keygen -t rsa

报错:Bad escape character ‘ygen’.

解决:ssh-keygen之间是没有空格的

添加公钥

GItee网站添加上id_rsa.pub 中的密钥

测试公钥
ssh -T git@gitee.com
运行图:
zoumaoji@zoumaojideMacBook-Pro ~ % ssh -T git@gitee.com
The authenticity of host 'gitee.com (180.97.125.228)' can't be established.
ED25519 key fingerprint is SHA256:+ULzij2u99B9eWYFTw1Q4ErYG/aepHLbu96PAUCoV88.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'gitee.com' (ED25519) to the list of known hosts.
Hi JanoandBiscuityeah! You've successfully authenticated, but GITEE.COM does not provide shell access.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

小坑

  • 高高兴兴继续git却发现还是需要输入账户和密钥

  • 使用命令

    • git -T git@gitee.com
    • 如果出现You’ve successfully authenticated, but GITEE.COM does not provide shell access.,说明密钥没问题
    • 那么这个问题便是发生在我们在克隆仓库的时候采用的是 https 的链接 git clone https://gitee.com/Name/project.git
    • 解决办法就是使用ssh方式克隆 git clone git@gitee.com:Name/project.git
    • 对于已经克隆的仓库修改 .git/config 文件中 url=https://gitee.com/Name/project.git 为 url=git@gitee.com:Name/project.git

常用的Linux命令

cd : 改变目录。
cd . . 回退到上一个目录,直接cd进入默认目录
pwd : 显示当前所在的目录路径。
ls(ll):  都是列出当前目录中的所有文件,只不过ll(两个ll)列出的内容更为详细。
touch : 新建一个文件 
mkdir:  新建一个目录,就是新建一个文件夹。
rm:  删除一个文件, rm index.js 就会把index.js文件删除。
rm -r :  删除一个文件夹, rm -r src 删除src目录
## rm -rf / 切勿在Linux中尝试!删除电脑中全部文件!
mv 移动文件, mv index.html src index.html 是我们要移动的文件, src 是目标文件夹,当然, 这样写,必须保证文件和目标文件夹在同一目录下。
reset 重新初始化终端/清屏。
clear 清屏。
history 查看命令历史。
help 帮助。
exit 退出。
#  表示注释
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/545541
推荐阅读
相关标签
  

闽ICP备14008679号