Git使用笔记

@Git使用笔记
参考CSDN

0、快捷方式

git add .  //将当前目录所有文件添加到暂存区
git commit -m "提交信息"  //提交至版本库
git push   //上传至github

一、Git简介

1.Git介绍

ctrl+g 是CSDN的查找替换
Git是目前世界上最先进的分布式版本控制系统。
工作原理 / 流程:
在这里插入图片描述

Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库

2.SVN与Git区别

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。

Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

3.window下的Git

  1. Git Bash //Git命令行(主要使用)
  2. Git GUI
  3. Git CMD

安装后在GIt Bash下的环境配置

因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。
注意:git config --global 参数,有了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱。

//设置用户名
git config --global user.name "xxx0461"
//设置邮箱
git config --global user.email "xxx0461@qq.com"

二、Git Bash使用

1.命令行创建版本库

  1. 首先在电脑上创建一个目录,用于做Git的版本控制目录;
cd D:
cd LINUX_C
mkdir test
//进入创建的文件夹初始化Git目录
git init  //该目录就变成了git可以管理的目录
  1. 将文件加入版本库
    首先在上述目录下创建一个文件,例如readme.txt
//将文件添加到暂存区
git add readme.txt
//将当前目录所有文件添加到暂存区
git add .
//将文件提交到仓库
git commit -m "提交日志"

//查看文件状态,查看是否有文件未提交
git status
  1. 当修改文件后
//查看文件哪里被修改
git diff readme.txt
//确认无误后可以用以上两步提交到版本控制库
  1. 版本回退
//查看历史版本
git log

//回到上一版本
git reset --hard HEAD^
//回到上上一版本
git reset --hard HEAD^^
//回到上100版本
git reset --hard HEAD~100

//查看版本号
git reflog
//回到相应版本号,例如回到6fcfc89版本
git reset --hard 6fcfc89
  1. Git撤销修改和删除文件
//---------撤销修改-------------
//1.在没有add之前
//法1:直接在图像化界面删除错误内容
//法2:用命令
git checkout -- readme.txt //把readme.txt文件在工作区做的修改全部撤销

1.readme.txt自动修改后,还没有放到暂存区,使用 撤销修改就回到和版本库一模一样的状态。
2.另外一种是readme.txt已经放入暂存区了,接着又作了修改,撤销修改就回到添加暂存区后的状态。

//---------删除文件-------------

一般情况下,可以直接在文件目录中把文件删了,或者使用如上rm命令:rm b.txt ,如果我想彻底从版本库中删掉了此文件的话,可以再执行commit命令 提交掉,现在目录是这样的,只要没有commit之前可以使用如下命令 git checkout – readme.txt恢复删掉的文件。

2.工作区与暂存区的区别

工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。
版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。

我们前面说过使用Git提交文件到版本库有两步:

第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。

第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。

三、远程仓库

1.项目上传

  1. 搞好GitHub
  2. 创建SSH Key
    1.先创建C盘的.ssh目录和秘钥文件
//两种秘钥
ssh-keygen -t rsa -C "邮箱"
ssh-keygen -t ed25519 -C "邮箱"

//如下好用
ssh-keygen -t rsa -C xxx0461@qq.com

进入.ssh目录cd ~/.ssh

输入gedit id_rsa.pub打开id_rsa.pub文件,复制其中所有内容。接着访问http://git.oschina.net/profile网页,点击SSH公钥,标题栏可以随意输入,公钥栏把你刚才复制的内容粘贴进去就OK了。

git remote add origin https://github.com/1097730461/LINUX_C1.git
git branch -M master
//第一次上传
git push -u origin master
//之后上传
git push origin master
//或者
git push
  1. 在本地创建一个版本库(即文件夹),通过git init把它变成Git仓库;
  2. 把项目复制到这个文件夹里面,再通过git add <目录或文件> 把项目添加到仓库;
  3. 再通过git commit -m "注释内容"把项目提交到仓库;
  4. git push -u origin master (才能真正把项目提交到仓库)
  5. 在Github上设置好SSH密钥后,新建一个远程仓库,通过git remote add origin xxx(复制项目中Clone or download地址)将本地仓库和远程仓库进行关联;
  6. 最后通过git push -u origin master把本地仓库的项目推送到远程仓库(也就是GitHub)上;(若新建远程仓库的时候自动创建了README文件会报错,解决办法看上面)。
//从GitHub上下载项目到本地
git clone +你想要克隆的项目的地址

2.跳坑记录

  1. 报错内容:but

You’ve successfully authenticated, but GitHub does not provide shell access.

或者:errno

fatal: unable to access ‘https://github.com/1097730461/LINUX_C.git/’: OpenSSL SSL_read: Connection was reset, errno 10054

又或者:Timed out

fatal: unable to access ‘https://github.com/1097730461/LINUX_C.git/’: Failed to connect to github.com port 443 after 21125 ms: Timed out

  1. 问题原因
    问题1原因:
    在git push 的时候提示输入账号密码。但我在另一个项目配置过 ssh 免密的。并且现在 git 也不允许 http 连接,所以提供账号密码也没办法 push。
    虽然是用 git 命令push,但本质上仍然是 https,所以不允许提交。

  2. 解决办法
    使用 git remote -v 查看现在的远程 url 地址。

git remote -v
origin	https://github.com/balala8/N0va_for_mac.git (fetch)
origin	https://github.com/balala8/N0va_for_mac.git (push)

修改url链接

git remote set-url origin  git@github.com:1097730461/LINUX_C.git   

再次查看

git remote -v                                                     
origin	git@github.com:balala8/N0va_for_mac.git (fetch)
origin	git@github.com:balala8/N0va_for_mac.git (push)

使用ssh测试链接

ssh git@github.com  

之后就可以正常提交了。

GITlab 上传代码

在GITlab中以下步骤非常有效:

  1. 先在GITlab中创建一个仓库(项目)
  2. 找一个文件夹用bash命令行Clone到文件夹
git clone git@git.n.xiaomi.com:xwave/linux_study.git
  1. 在当前文件夹下打开git bash如有必要,将当前文件夹和远程仓库链接,并进入master
//如有必要进行如下两步
git remote add origin https://github.com/1097730461/LINUX_C1.git
git branch -M master

//在本地文件夹放入新的代码文件后,用以下方式上传到远程仓库
git add <目录或文件>  //操作两次
git commit -m "注释内容"
git push -u origin master //之后推可直接用 git push

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值