Git版本控制器、GitHub/码云使用、以及Linux/windows常见命令

一、常见的版本控制系统

(一)svn 集中式版本管理系统;
(二)git分布式版本管理:工作区、暂存区、历史区

SVN和Git的区别?

(一)SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后工作,完成工作后,需要把自己做完的活推送到中央服务器,集中式版本控制系统是必须联网才能工作,对网络带宽要求较高。
(二)Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网,因为版本都在自己电脑上,协同的方法是这样的:
比如自己在电脑上改了A文件,其他人也在电脑上改了A文件,这时候,你们两之间只需要吧各自的修改推送给对方,就可以互相看到对方的修改,Git可以直接看到更新了哪些代码和文件

Git环境配置

打开官网下载、但是下载慢的话,我们可以去使用淘宝镜像下载

卸载与安装

卸载: 直接反安装即可,然后清理环境变量;安装: 无脑下一步即可!安装完毕就可以使用了

二、常见命令

查看配置 git config -l

#查看系统config
git config --system --list
  
#查看当前用户(global)配置
git config --global --list

Git相关的配置文件:

1)、Git\etc\gitconfig :Git 安装目录下的 gitconfig --system 系统级

2)、C:\Users\Administrator\ .gitconfig 只适用于当前登录用户的配置 --global 全局

1、初始化一个仓库—进入到你要进行版本管理的文件夹里面

git init  

2、配置个人信息

#个人名称

git config --global user.name 'xxx'

#个人邮箱

git config --global user.email 'xxx@xxx.com'

3、从工作区提交到暂存区

git add .    #提交全部文件
git add -A    #提交全部文件
git add <files>   #指定提交的文件

4、从暂存区提交到历史区** ------注意:如果没有-m的选项,就会进入 vim 编辑器进行相关信息编写

git  commit -m '提交的相关信息'

注: 红色代表在工作区 绿色代表在暂存区

5、查看提交的历史版本

git log     		#查看详细的提交信息
git log --oneline  			#查看精简的历史信息

6、切换历史版本

git  reset --hard 版本标识符

其他命令
①查看文件内容:cat 1.txt
②新建:touch 1.txt
③查看当前状态:git status
④给文件添加内容vim 1.txt
⑤回滚:git restore --staged x
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7、使用merge命令合并分支

// 首先切换到master分支上
git checkout master
// 如果是多人开发的话 需要把远程master上的代码pull下来
git pull origin master
// 然后我们把dev分支的代码合并到master上
git merge dev
//git status

On branch master Your branch is ahead of 'origin/master' by 12 commits.   (use "git push" to publish your >local commits) nothing to
commit, working tree clean

//上面的意思就是你有12个commit,需要push到远程master上 
// 最后执行下面提交命令 
git push origin master 

8、合并某个分支上的单个commit(cherry-pick命令)

比如 feature 分支上的commit 82ecb31非常重要,它含有一个bug的修改,或其他人想访问的内容。
无论什么原因,你现在只需要将82ecb31合并到master,而不合并feature上的其他commits;

git checkout master  
git cherry-pick 82ecb31

三、Git工作流程

git的工作流程一般是这样的:

1、在工作目录中添加、修改文件;

2、将需要进行版本管理的文件放入暂存区域;

3、将暂存区域的文件提交到git仓库。

因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)
在这里插入图片描述
日常使用流程:
在这里插入图片描述
文件的四种状态:

版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。

Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified
Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改 !
Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件

#查看指定文件状态
git status [filename]

#查看所有文件状态
git status

# git add .                  添加所有文件到暂存区
# git commit -m "消息内容"    提交暂存区中的内容到本地仓库 -m 提交信息

设置本机绑定SSH公钥,实现免密码登录!(免密码登录,这一步挺重要的,码云是远程仓库,我们是平时工作在本地仓库!)
ssh-keygen -t rsa

在这里插入图片描述
在这里插入图片描述

思维导图

注意:添加本地项目与远程项目关联使用git remote add “origin” (远程库的ssh协议)
在这里插入图片描述
在这里插入图片描述

免密操作没起效

若没有成功=>解决:
(一)

IDEA集成Git

忽略文件
有些时候我们不想把某些文件纳入到版本控制中,比如数据库文件,临时文件、设计文件等
在主目录下建立".gitignore"文件,此文件有如下规则:
在这里插入图片描述

四、GitHub使用

1、创建仓库
2、提交远程仓库【第一次提交需认证】
一定要记得从历史区提交
git push 远程仓库的地址 master
注意: 提交到远程的时候,先将本地的代码提交到本地地历史区

3、从远程拉取【远程同步代码】
git pull 远程仓库的地址 master

问题:在第二次提交的时候,可能出现下图问题:
在这里插入图片描述
原因分析:
通过查看提示信息,我发现,是因为本地仓库和远程仓库的文件不一致所致,也就是GitHub允许本地有的东西,远程仓库里没有
解决方案:
在push提交之前先同步一下本地仓库与远程仓库的文件,使用以下命令:

git pull --rebase 远程仓库地址 master

成功后提示如下图:
在这里插入图片描述
设置秘钥:
ssh-keygen -t rsa -b 2048 -C “地址”

接下来就可以继续push自己的代码,进行提交了
4、条件东西到别人仓库(提交作业)
①首先打开别人的仓库找到对应的—点击右边的Fork拉取–然后跳转到自己仓库–
②随便找个文件夹打开git–输入 git clone 远程地址 master—克隆完成后进去创建自己的文件–依次开始提交暂存区-历史区-git pull 远程仓库的地址 master–自己仓库有了
③提交到老师那:打开自己的GitHub—按下Pull requests–点击右边的新建–点击右边的create pull request—进去继续点create pull request

fork --> Pull requests

  1. fork 某个项目
  2. 回到我的 github 就可以看到 fork 过来的项目
  3. 把这个项目 clone 下来 git clone https://github.com/"you"/"you repositries"
  4. 接下来就可以进行相应的操作了
  5. 把修改的文件再提交到 github (注:提交之前先提交到本地历史区)
  6. 回到 github 发起 Pull requests

场景一:

当你某个改动提交到本地仓库之后,也就是 commit 之后,这个时候你想撤回来,再改点其他的,那么就可以直接使用 git reset HEAD^。这个时候你会惊奇的发现,你上一版的代码改动,全部变成了未被提交到暂存区的状态,这个时候你再改改代码,然后再提交到暂存区,然后一起再 commit 就可满足你的需求了。
除了这种基础用法,我们还可以配合其他命令操作一下。

场景二:

某一天你老板跟你说,昨天新加的功能不要了,给我切回之前的版本看看效果,那么这个时候,你可能就需要将工作区的代码回滚到上一个 commit 版本了,操作也十分简单:

git log 查看上一个 commit 记录,并复制 commitId
git reset --hard commitId 直接回滚。

场景三:

如果某一个你开发需求正开心呢,突然发现,自己以前改的某个东西怎么不见了,你想起来好像是某次合并,没注意被其他提交冲掉了,你心一想,完了,写了那么多,怎么办?很简单,回到有这份代码的那个版本就好了(前提你提交过到本地仓库)。
假设我们有这么两个提交记录,我们需要下面那个 365 开头 commitId 的代码:

commit e62b559633387ab3a5324ead416f09bf347d8e4a (HEAD -> master)
Author: xiaohang.lin <xiaohang.lin@alibaba-inc.com>
Date:   Sun Aug 14 18:08:56 2022 +0800

    merge

commit 36577ea21d79350845f104eee8ae3e740f19e038 (origin/master, origin/HEAD)
Author: 陌小路 <44311619+STDSuperman@users.noreply.github.com>
Date:   Sun Aug 14 15:57:34 2022 +0800

    Update README.md

1、抢救第一步 git log 找到有你这个代码的那个 commitId(也就是 36577ea21d79350845f104eee8ae3e740f19e038)
2、抢救第二步 git reset --hard commitId
3、第三步:Ctrl + c 你的目标代码

这个时候你想把复制好的代码写回去,该怎么办呢,你可能会再 git log 看一下我们 reset 之前的 commitId,你会发现,完了,之前的 commitId 都没了,只有这个 365 了。

commit 36577ea21d79350845f104eee8ae3e740f19e038 (origin/master, origin/HEAD)
Author: 陌小路 <44311619+STDSuperman@users.noreply.github.com>
Date:   Sun Aug 14 15:57:34 2022 +0800

    Update README.md

不要慌,请记住一句话,只要你不删你本地的 .git 仓库,你都能找回以前所有的提交。
git log 看不到的话,我们就可以祭出我们的绝招了:git reflog

36577ea (HEAD -> master, origin/master, origin/HEAD) HEAD@{0}: reset: moving to 36577ea21d79350845f104eee8ae3e740f19e038
e62b559 HEAD@{1}: reset: moving to e62b559633387ab3a5324ead416f09bf347d8e4a

这里我们可以看到两行记录,一个是我们执行 reset 到 365 的记录,另一条不知道是啥,不重要,我们想回到我们刚刚 reset 之前的状态也很简单,直接复制它上一次的变动也就是这个 e62b559,然后执行 git reset --hard e62b559,然后你会惊奇的发现,你之前的代码又回来了。
接下来把你以前版本的代码,再 Ctrl + v 放进来就完成了。

五、码云使用

(一)先git clone 项目地址【把项目拉到本地】
(二)git add .
(三)git commit -m ‘本次提交的注释’
(四)git push【项目内容被成功推到码云上】

六、Linux和Windows常见命令

在这里插入图片描述

有任何问题可扫码咨询

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java亮小白1997

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值