啊,折磨人的Git
git最初是在idea上使用的,傻瓜式按部就班的操作就能正确上传到github上,但脱离了工具,用命令行就不会操作了。 现在有个想法,把hexo的文章上传到github,保证数据不会丢,所以就用到了linux下git的使用。琢磨了10个小时也没能正确的上传,很是痛苦。
怎么才能正确上传呢?
1. 首先配置本地与远程git端的密钥
输入ssh-keygen –t rsa –C xx@qq.com
然后点三次回车(这里卡壳了1个小时,不懂命令行让我输入什么密码,实际上按默认的来即可)
2. 配置公钥
此处卡壳也很久,因为每次失败都要重新生成密钥,但最后一次才找到密钥的正确位置。
linux默认把密钥放在了/root/.ssh/id_rsa.pub 所以打开这个文件,把其中的密钥复制到剪贴板,然后在github的setttings/ssh keys中add ssh keys ,把刚刚的密钥复制过去,保存。
回到命令窗口,运行命令 ssh -T git@github.com ,选择yes继续,密钥配置成功。
3. 配置用户名和密码
git config –global user.name "cyzuestc"
git config –global user.email "xxxx@qq.com"
4. 在需要上传文件所在文件夹内,运行 git init ,就生成 .ssh 的隐藏文件
第一步:增加对我们github上创建的_post仓库的管理:git remote add origin git@github.com:cyzuestc/_post.git
第二步:拉取仓库中的文件: git pull git@github.com:cyzuestc/_post.git(由于缺少这两步,我折腾了数个小时也没成功上传)。
第三步: 把本地文件上传到远程仓库
a. git add .(提交所有更改的文件)
b. git commit -m "本次提交的评语,必写"
c. git push git@github.com:cyzuestc/_post.git 成功推送
第二天又操作了一波
之前的操作虽然成功了,但存在着些个小问题。比如
- 某些小文件也没有上传
- _post下的文件没有上传 虽然是小坑,也严重耗费了我将近3个小时时间。欲哭无泪。。。 对应的解决方案: 1.在.git目录下,有一个.gitignore文件,里面莫名其妙写了一些忽略的文件,把其删除即可。 2.之前专门为_post建立了respository并将其内容上传。将github上的respository删除后,又重头上传所有文件,就解决了。
如何新建git?
之前理解有误,认为必须先pull github的 git才能上传本地git,又查阅了一些博客后得知,并不需要这么反人类的操作。 具体操作如下: 先关联一个远程库,远程库的名称默认为origin
git remote add origin https://github.com/zongyunqingfeng/testgit 关联一个远程库
然后将当前master分支推送到远程库
git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库
-u的作用是以后直接用git push 代替git push origin master
遇到的两次报错
1. warning: push.default is unset
需要指定分支:
git config --global push.default matching
2.No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
此报错意思为git不知道您当前提交的版本
git push origin master
再吐槽一次
要有顺手的电脑,正确的教程,才能顺畅的踩完坑,不然痛苦的要死。。。 参考教程 https://www.cnblogs.com/nelson-hu/p/6395770.html
常用的git命令
Git基本常用命令如下:
mkdir: XX (创建一个空目录 XX指目录名)
pwd: 显示当前目录的路径。
git init 把当前的目录变成可以管理的git仓库,生成隐藏.git文件。
git add XX 把xx文件添加到暂存区去。
git commit –m “XX” 提交文件 –m 后面的是注释。
git status 查看仓库状态
git diff XX 查看XX文件修改了那些内容
git log 查看历史记录
git reset –hard HEAD^ 或者 git reset –hard HEAD~ 回退到上一个版本
(如果想回退到100个版本,使用git reset –hard HEAD~100 ) 1
cat XX 查看XX文件内容
git reflog 查看历史记录的版本号id
git checkout — XX 把XX文件在工作区的修改全部撤销。
git rm XX 删除XX文件
git remote add origin https://github.com/zongyunqingfeng/testgit 关联一个远程库
git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库
git clone https://github.com/zongyunqingfeng/testgit 从远程库中克隆
git checkout –b dev 创建dev分支 并切换到dev分支上
git branch 查看当前所有的分支
git checkout master 切换回master分支
git merge dev 在当前的分支上合并dev分支
git branch –d dev 删除dev分支
git branch name 创建分支
git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作
git stash list 查看所有被隐藏的文件列表
git stash apply 恢复被隐藏的文件,但是内容不删除
git stash drop 删除文件
git stash pop 恢复文件的同时 也删除文件
git remote 查看远程库的信息
git remote –v 查看远程库的详细信息
git push origin master Git会把master分支推送到远程库对应的远程分支上