GIT文件的三种状态 & Git SSH秘钥问题(弄SSH到吐血了)

(0)目录

VMware 下安装Ubuntu的吐血经历

零基础学习Shell编程

Linux下的makefile的妙用

Linux调试神器 -- gdb

十分钟学会Python的基本类型

分布式版本管理神器--GIT

GIT文件的三种状态 & Git SSH秘钥问题

一:GIT文件的三种状态

1-- 在目录下新建README.txt文件,接着,使用“git status”查看文件状态,如

可以看到, Git友好的标示出README.txt为“Untracked files”,并且提示使用“git add ...”的命令将文件包含到待提交清单中。

2-- 按照提示,使用“git add README.txt”命令,然后,使用“git status”查看文件状态,如

文件README.txt状态变成了“Changes to be committed”,也就是说README.txt在暂存区域生成了快照,等待被提交。正如Git所提示的那样,通过“git rm --cached 

README.txt”命令,可以将文件状态还原为未暂存状态,即回到“Untracked files”文件状态。现在,README.txt已经可以被提交到git目录中了,但是暂时不提交。


3-- 打开README.txt,向其中加些内容,保存之后,用“git status”查看,返回信息:

可以看到,除了之前的“Changes to be committed”状态,现在又多了一条“Changes not staged for commit”状态,表明文件已经修改,但是还没有放入暂存区域,也就是没生成快照。如果现在进行commit操作,只是将修改之前的文件快照提交到了git目录,一定记住:只有暂存区域的文件(即:文件状态为“Changes to be committed”)才会被提交。

正如提示,通过“git add README.txt”命令将已修改文件更新到暂存区域中,如果想撤销修改,可以使用“git checkout -- README.txt”命令。

4-- 正如上文所说,Git在未进行commit操作之前,存在三种状态:Untracked files,Changes not staged for commit及Changes to be committed,每种状态之间可以随意进行互相转换。了解这三种状态各自所对应的不同情况,能够帮助你方便有效的使用Git来管理项目。


二:SSH秘钥

(1)Cannot push to github, ssh: Could not resolve hostname

--------------
demo_app $ git remote add origin [email protected]:/demo_app.git

fatal: remote origin already exists.

$ git push -u origin master
---
ssh: Could not resolve hostname git: nodename nor servname provided, or not known
---
fatal: Could not read from remote repository.
---
Please make sure you have the correct access rights
---
and the repository exists.
----------
---------

Checked ssh keys

---
$ ssh -T [email protected]

Hi ! You've successfully authenticated, but GitHub does not provide shell access.

--
解决方案:

git remote set-url origin [email protected]:/demo_app.git
rm -rf .git
git init .
git remote add origin [email protected]:/demo_app.git
git commit --allow-empty -m 'First commit'
git push origin master

(2)在本地生成SSH秘钥和公钥:详见 Git基本命令  和秘钥的生成
    cd ~/.ssh/
   ~/.ssh$ ssh-keygen -t rsa -C "150321****@163.com"

  生成之后:把公钥在github上进行设置
  ~/.ssh$ gedit id_rsa.pub
  复制上面的公钥内容,在github上的setting里面add key进行设置即可。
1) ssh-keygen -t rsa -C "[email protected]"
Creates a new ssh key using the provided email Generating public/private rsa key pair.
#此处输入将要保存的路径,默认为当前路径
Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa):
输入回车后提示输入一个类似于密码的自定义的通行证号,如果直接回车则为空 passphrase 是密码的意思
Enter passphrase (empty for no passphrase):
#提示重新输入以便确认输入是否正确
Enter same passphrase again:
如果看到Your public key has been saved等信息则说明保存成功

2)将SSH key输入到GitHub网站中
在:Account Settings->SSH Pbulic Keys>单击Add another public key
将刚才新建的key输入到key中并且添加一个标题,例如:git-tutorial。即/Users/your_user_directory/.ssh/id_rsa。默认情况下.ssh是隐藏文件,需要将系统设置成显示隐藏文件才能看到。输入完成后单击Add key后,会看到git-tutorial已经被添加进去了。

3)测试是否能够正确链接到github中,输入以下命令:
ssh -T [email protected]
将会显示一下信息
The authenticity of host 'github.com (207.97.227.239)' can't be established. RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48. Are you sure you want to continue connecting (yes/no)?
输入yes后,显示出下列信息表示连接成功
Hi username! You've successfully authenticated, but GitHub does not provide shell access.

(3)至此,远程版本库(GitHub)和 本地库建立了关联,可以通过:

   1) git remote add [email protected]:/demo_app.git(建立关联)

   2)git push -u origin master  推送到GitHub上(第一次)

   3)git push origin master (非第一次)

   

你可能感兴趣的:(Python,&,Shell,of,Linux)