ssh-keygen
# 本地创建 SSH (三下回车)
获取方式有两种:
第一种方法:使用如下指令获取本地公钥(推荐):
cat ~/.ssh/id_rsa.pub
具体操作如下图所示:
第二种方法:进入 id_rsa.pub 文件所在的目录,拷贝 id_rsa.pub 里的公钥
将获取到的公钥粘贴到仓库中的 SSH and GPG keys 里
使用如下指令确认是否配对成功
ssh -T git@github.com
SSH警告 当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:
The authenticity of host 'github.com (xx.xx.xx.xx)' cant be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?
这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。 Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:
Warning: Permanently added 'github.com' (RSA) to the list of known hosts.
这个警告只会出现一次,后面的操作就不会有任何警告了。 如果你实在担心有人冒充GitHub服务器,输入yes前可以对照GitHub的RSA Key的指纹信息是否与SSH连接给出的一致。
本地仓库与远程仓库做关联有两种情况:一种是先创建本地仓库然后远程仓库与本地同步;另一种是先创建远程仓库然后本地与远程同步
git init :初始化本地仓库;隐藏文件.git 就是本地仓库
git config --global user.name 'lyc458216' :本地环境配置用户名
git config --global user.email lyc458216@xxxx.com :本地环境配置用户邮箱
git config --list :查看 git 配置
复制 github 项目上的项目地址:Clone or download(比如 https://github.com/lyc458216/xxxxx.git )
使用如下指令来添加远程仓库
git remote add origin https://github.com/lyc458216/xxxxx.git
先复制远程库的地址,注意 必须是SSH 形式的地址 格式如下:
git@gitee.com:lyc458216/*********.git
然后在本地
git clone git@gitee.com:lyc458216/*********.git
# 此时 git 会把远程库代码克隆到本地
小结:
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的,当有网络的时候,再把本地提交推送一下就完成了同步。
git remote -v :查看远程仓库
git remote rename [old][new] :远程仓库重命名
git remote add [name][remote url] :添加 github 源仓库地址为远程仓库
工作目录、暂存区、Git 仓库:
四个工作区及指令:
git status :查看当前文件的状态
git add [文件名] :提交到暂存区
git add . :提交所有文件到暂存区
git commit -m '描述信息' :提交到本地仓库(每次 commit 都称为一个版本),描述本次版本提交信息
git push [remote][branch] :提交内容到远程仓库
git log :打印当前所有操作
checkout :必须要先 add 才存在恢复一说,checkout 可以理解为“切回某个文件”的意思。但是要注意,这个命令是对工作区生效的
git checkout -- [文件名] :撤销工作区对暂存区的修改(回退到最后一次 add 后的暂存区状态,使工作区与暂存区状态一致)
例:把 readme.txt 文件在工作区的修改全部撤销
git checkout -- readme.txt
# 去除所有更改
git checkout .
HEAD 及各个版本示意图:
不覆盖工作区:
git reset HEAD [文件名] :暂存区文件撤销
git reset HEAD~3 :暂存区文件撤销 3 次
高级指令:
git reset --(soft | mixed | hard) <HEAD~(num )> | <commit ID>
soft -> 只回退 HEAD,回退到 commit 之前的状态
mixed -> 部分回退,包括 HEAD,index,回退到 add 之前的状态
hard -> 全部回退,包括 HEAD,index,working tree,直接退回到上一个版本,(使用--hard 会覆盖工作区内容)
git reflog :每一步都干了什么
git diff :比较工作区与暂存区
git diff HEAD :比较工作区与本地版本库中最近一次 commit 的内容
git diff --cached :比较暂存区与本地版本库中最近一次 commit 的内容
git diff [commit-id][commit-id] :比较两个 commit 之间的差异
git branch :查看分支
git branch :创建新分支
git checkout :切换分支,例:
git checkout master
git checkout -b :创建并且换分支
git branche -d :删除本地分支
git push -d :删除远程分支
推送至远端库,及从远端库拉代码:
git push origin master
此写法是 git push origin master:master 的简写形式,把本地的 master 分支(前一个 master)推送至远端 master 分支(后一个 master,如果远端没有这个分支会自动新建一个)
遇到 failed to push some refs to https://github.com/lyc458216/Music.git 问题如何解决:
出现错误的主要原因是 github 中的 README.md 文件不在本地代码目录中 解决方法: 可以通过如下命令进行代码合并(注:pull=fetch+merge)
git pull :从远端库拉取代码到本地端
git pull --rebase origin master :从远端库拉取代码到本地端
git clone https://github.com/lyc458216/Music.git :只拉取这个项目 master 分支上的代码
git merge origin/index-swiper :在 master 分支下执行改命令,把线上的 index-swiper 分支新增的内容合并到 master 分支上
文件暂存:
git stash save -a 'message' :改动添加到 stash
git stash drop <stash@{id}> :删除暂存
git stash list :查看 stash 列表
git stash clear :删除全部暂存
git stash pop <stash@{id}> :恢复改动
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。