本站使用了 Pjax 等基于 JavaScript 的开发技术,但您的浏览器已禁用 JavaScript,请开启 JavaScript 以保证网站正常显示!

必先利其器 - GIT学习笔记

教程:https://www.liaoxuefeng.com/wiki/896043488029600
用git仓库管理自己代码


敲黑板, 划重点:

  1. 首先搞明白
    工作区: 当前在电脑上可以编辑的文件夹

暂存区: 一块隐藏的区域, 当工作区的文件修改变动之后, 通过add命令存放进去的地方
分支: 把暂存区的各种文件, 通过commit命令提交后生成的版本树

一、下载安装

https://www.jianshu.com/p/a152f82c5e4a

二、创建版本库

  • 先注册账号,然后在命令行提交
git config --global user.name "用户名"
git config --global user.email "邮箱"

--global 表示对这台电脑的所有版本库都使用上面的用户名和邮箱;


用户名和邮箱是否必须是在github上面注册的呢?

  • 指定一个文件夹, 作为工作区
cd f:git/project
git init
  • 在文件夹中新建一个文件readme.md(可以在子目录)

通过add命令可以将文件添加到暂存区;
通过commit命令将暂存区的文件提交到分支

git add readme.md
git add file1.md file2.md
git commit -m "说明,我提交了3个文件"

三、查看版本库状态

  • 先尝试修改一下文件, 然后重复上面的addcommit提交

如果修改了文件, 查询状态显示changes not stage for commit
如果执行了add命令, 查询状态显示changes to be committed
如果执行了commit命令, 查询状态显示work tree clean

  • 查看状态
git status
  • 查看差异
git diff

四、版本切换

  • 查看当前的版本修改记录
git log
  • 回上一个版本
git reset --hard HEAD^
  • 回上上一个版本
git reset --hard HEAD^^
  • 回到任意一个版本
git reset --hard 哈希值
  • 哈希值怎么找:看历史记录
git reflog

五、撤销修改

假设工作区的文件add且commit过一次

然后再进行下面的操作:

  • 在工作区修改了文件, 但是还没有add到暂存区
    执行下面的命令, 可以恢复到与最后的版本一致的状态, 也就是修改前的状态
git checkout -- 文件名
  • 已经add到暂存区, 然后在工作区修改了文件
    执行下面的命令, 可以恢复到和暂存区一致的状态
git checkout -- 文件名

前面2种情况, 都是在工作区修改了文件, 修改的状态还没有add到暂存区

  • 修改了文件, 又add到了暂存区, 但是还没有commit
    执行下面的命令, 可以将暂存区的文件退回到工作区
git reset HEAD 文件名

退回到工作区的文件是被修改过的, 那么再执行下面的命令, 可以恢复到未修改的状态

git checkout -- 文件名

六、删除文件

假设工作区的文件是add并commit过一次

  • 使用rm删除
rm 文件名

直接使用rm删除的文件, 可以通过git checkout -- 文件名恢复

  • 使用git rm删除
git rm 文件名

使用git rm删除文件, 这次操作会被记录到暂存区
如果要撤销这次删除, 那么执行

git reset HEAD 文件名
git checkout -- 文件名

如果确认要删除, 那么继续执行git commit -m "这次真的删除了",
如果想恢复怎么办? 看上面的版本切换的内容, 通过git reset --hard + 哈希值或者HEAD^进行恢复

七、远程仓库

1. 密钥设置

  • 创建SSH KEY
ssh-keygen -t rsa -C"邮箱"

运行命令之后一直回车, 生成的密钥文件在C:\Users\Administrator\.ssh路径下;
分别是:
id_rsa : 私钥
id_rsa.pub : 公钥

  • 在github上面填写ssh
    设置中找到SSH and GPG keys, 点击new SSH key后输入titlekey;

可以add多个key, 适用于多台电脑协作的情况;
现在这个github是公开的;

2. 本地仓库关联远程仓库

  • 创建github远程仓库
    +下面:

1.选择New repository创建新库
2.输入Repository name库名
3.选择public或者private
4.√ Initialize this repository with a README
5.最后Create repository创建

Snipaste_2020-01-07_17-05-33.png

  • 将本地的仓库关联至远程仓库
git remote add origin git@github.com:用户名/仓库名.git
  • 将本地库内容推送到远程仓库
git push -u origin master

第一次推送需要-u, 用于关联本地master分支和远程master分支;
以后对本地库进行了修改, 只需要git push origin master就可以了
此处遇到问题看最后

3. 克隆远程仓库至本地

  • 从远程库克隆
    克隆自己的
git clone git@github.com:用户名/库.git

克隆其他地址的

git clone https://github.com/michaelliao/gitskills.git

附录: 小问题

1.命令行一直显示:

使用q退出

2.命令行一直显示>

使用ctrl+d退出

3.推送到远程仓库时提示

第一次关联了远程仓库后, 使用git push -u origin master推送本地文件至远程仓库提示:

The authenticity of host 'github.com (13.250.177.223)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

直接yes就行, 然后遇到下面的提示:

To github.com:用户名/库.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'git@github.com:用户名/库.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

原因是创建远程仓库时Initialize this repository with a README, 创建了readme.md文件, 导致本地库和远程库版本不一致, 所以push不成功;
使用 git push -f origin master强行覆盖就可以了

4.克隆的库推送到自己的github提示

$ git remote add origin git@github.com:用户名/库.git
fatal: remote origin already exists.

使用命令git remote rm origin后重新关联并推送


Offer

推广

 继续浏览关于 githubgit教程git命令git安装 的文章

 本文最后更新于:2020/02/16 16:11:09,可能因经年累月而与现状有所差异,有任何疑问可以随时与258771198@qq.com沟通,邮箱永久有效

 引用转载请注明:manacode(码扣) > 烂尾工程,杂货铺 > 必先利其器 - GIT学习笔记