当前位置:   article > 正文

git/github学习笔记-阅读笔记二_error: unable to create '/home/stormyjack/recon/de

error: unable to create '/home/stormyjack/recon/default/.git/head.lock': fil

一、git/github的初接触

1、git的初始安装

这部分都是准备工作。一次完成后,以后都不需要再设置了。

0.前期准备
cd ~/.ssh  //检查计算机ssh密钥
  • 1

如果没有提示:No such file or directory,或者在C:\Users\Administrator.ssh(默认)中存在id_rsa.pub文件,那么说明不是第一次使用git。建议执行清理原有ssh密钥的操作。重新设置git和github的密钥(用于连接二者)。

ls // 用于查看当前目录下的文件(也就是检查是不是存在id_rsa和id_rsa.pub文件)
rm id_rsa* //删除上述两个文件
  • 1
  • 2

事实上,直接在C盘中将相应文件删除亦可。

1.获得密钥:
ssh-Keygen -C'myemailname@email.com' -t rsa
  • 1

这样在 C:\Users\Administrator.ssh中生成了两个文件id_rsa和id_rsa.pub,后者用记事本打开,即为密钥。

2.密钥更新到github中

打开github(已经注册过github账户的前提下),右上角=>settings=>SSH and GPG keys=>New SSH key,随便写个title,将刚才得到的密钥复制粘贴到此处即可。
在git中检查和github的连接是否成功

ssh -T git@github.com // ssh -v git@github.com 也可以
  • 1

看到提示Hi BeMyselfDoMylife! You’ve successfully authenticated, but GitHub does not provide shell access.则连接成功。
可能错误:
出现了下述问题:

The authenticity of host '<host>' can't be established.
ECDSA key fingerprint is    SHA256:TER0dEslggzS/BROmiE/s70WqcYy6bk52fs+MLTIptM.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'pc' (ECDSA) to the list of known hosts.
  • 1
  • 2
  • 3
  • 4

问题描述:
可能是由于主机的key有变化,或者是ip有变化等,这个提示是对宿主机的检查。
解决办法:
方法1、删除原ssh key,重新生成key
方法2、在交互时(yes/no)的选择中不放空,填yes。可以暂时成功,但是下次仍旧会有提示
方法3、ssh -o StrictHostKeyChecking=no 192.168.xxx.xxx
xxx是本机的ip地址,windows用ipconfig all查询。相当于忽略了本机的检查

http://stackoverflow.com/questions/3663895/ssh-the-authenticity-of-host-hostname-cant-be-established

3、设置git上的用户信息
git config --global user.name'给自己的git起的用户名'
git config --global user.email'xxxx@xx.com'
  • 1
  • 2

这是git官网上建议的全局变量的设置步骤,阅读笔记一中也提到了。

4、设置github和git相连的用户信息
git config --global githubl.user xxxx
git config --global github.token we65431e564rw32w1e316w46we
  • 1
  • 2

其中token来自于github=>settings=>Personal access tokens=>Generate new token
上述步骤的目的是设置一个口令,不太明白设置的目的是什么?

2、github上的项目通过git更新

1、github上创建项目

按照github上的New repository新建项目,在此不再赘述。
假设创建的项目名字是test-item

2、git上创建同名项目

找到要放置相关项目的地址,右键git bash here。

mkdir test-item
cd test-item
git init //初始化,目的是在test-item文件夹目录中创建一个.git的隐藏目录
git add . //后面的一个.意思是添加所有文件(到暂存区)的情况。如果只是想把指定的文件放到暂存区,可以如下:
git add xxx.ttt //xxx.ttt文件名.后缀
git commit -m'这次commit的说明'
git remote add origin git@github.com:用户名/test-item.git //连接远程github项目
git push -u origin master //上述连接完成后将本地的项目更新push到github项目上去
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

这样,本地文件夹中的文件xxx.ttt或者其他文件就被上传到github的同名项目中的更新上了。
需要说明的是git add这一步其实是把文件暂时放在暂存区。
git存放代码的地方
git中有三个地方可以存放代码:
(1)工作目录树(也就是test-item文件夹下)——可以直接在此处编辑文件;
(2)暂存区(也就是索引index),这是工作目录树和版本库之间的缓冲区。
(3)版本库,最终存放的代码。
我理解的顺序:
文件夹中写代码 code.xxx => 工作目录树 => add => 暂存区 => commit =>版本库
检查状态

git status //显示工作目录树的状态,即当前的视图状态
git log //显示git中的提交留言
git remote -v //查看当前项目远程连接的是哪个仓库地址(即哪个github版本库)
  • 1
  • 2
  • 3

可能错误1
在步骤git remote ...中出现了以下问题

fatal: remote origin already exists
  • 1

问题描述
我猜测这是因为远程的连接已经存在了,所以再次连接报错。可以忽视直接下一步push或者选择

git remote rm origin
  • 1

相当于先关闭先前的remote。再重新执行

git remote add origin git@github.com:用户名/test-item.git 
git push -u origin master
  • 1
  • 2

可能错误2
在步骤git push中出现了下述错误:

error:failed to push som refs to...
  • 1

问题描述
似乎是push时文件和github同名项目上的文件冲突,如上传的文件名相同(如果是同一份程序的不同版本,则应该选择分支更合理,以后再描述)等。
或者github上的文件需要先更新到本地版本库项目中。
解决办法
对于同名文件的上传,选择分支而不是master。以后具体阐释。
对于后一个可能。

git pull origin master 
  • 1

即先把远程服务器github上的文件pull下来(此时github上的文件都传到本地中了)。再执行:

git push -u origin master
  • 1

当出现:

Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 393 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
Togithub.com:****/algorithm-test.git
awe546we654  master -> master
Branch master set up to track remote branch master from origin.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

类似这样的结果说明上传成功。

3、github中的项目克隆到本地

1、第一次

如果本地文件夹中不存在这个项目,第一次想要将github中的文件存放到本地电脑中的指定文件夹中,git bash here并运行:

git clone git@github.com:用户名/test-item.git
  • 1
2、github中的更新合并到本地

如果本地中已经有了这个项目。github仓库中有更新,想要把更新合并到本地项目中。(例如,电脑甲了code,并commit到github中了,想要同步电脑乙中的code)
同样在github的相应文件夹中,git bash here并运行:

git fetch origin //取得远程更新,但只取着了还没做操作
git merge origin/master //把更新的内容合并到本地分支/master中
  • 1
  • 2

参考

虫师的博客-git/github学习笔记
http://www.cnblogs.com/fnng/archive/2011/08/25/2153807.html
虫师的博客-git/github初级运用自如
http://www.cnblogs.com/fnng/archive/2012/01/07/2315685.html
Git/Github使用方法小记
http://artori.us/git-github-usage/

`
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/445576
推荐阅读
相关标签
  

闽ICP备14008679号