git的使用

简介: git的使用

Git

版本控制工具,对文件或内容做版本控制

记录文件在不同的时间点的状态,追踪到文件在不同的时间点下的不同状态。

可以协作的、也可以公开、可以追踪历史网盘 → 协作开发

GitHub 996icu

Linus → Linux、Git、git的命令行里可以使用linux的一些命令

分布式版本控制工具(Git)、集中式版本控制工具(SVN)

离线可用

Git的操作流程

pull:本地仓库落后于远程仓库,可以通过pull拉取远程仓库更(四声)新的这部分

push:本地仓库领先于远程,可以通过push推送给远程领先的这部分内容

工作区:是看得见摸得着的地方,开发的位置

add:将工作区的变化(指定文件)提交到暂存区

commit:将暂存区所有的变化都提交到本地仓库,产生版本信息

Git的安装

next → finish

使用Git

创建远程仓库

注册账号:记住用户名和密码

clone 获得本地仓库

git clone 仓库地址 → 克隆到当前位置

git clone 仓库地址 文件夹 → 克隆到指定文件夹

我们通常会使用一个这样的命令 git clone 仓库地址 **. ** → clone到当前文件夹

注意:

  • .git文件夹是一个隐藏文件夹,不要直接操作;
  • .git文件夹所处的目录就是工作区的根目录;也可以工作蓝色文字来区别
  • 工作区产生的变化都会被git识别

status 查看状态

git status

查看工作区和暂存区的状态,查看变化在工作区,还是已经提交到暂存区了

查看文字颜色:红色工作区绿色暂存区

![外链图片转

add 工作区提交到暂存区

git add 文件名

git add *.java 提交某个类型的文件中产生的变化

git add src/* 提交某个目录下的文件中产生的变化

git add . 提交当前目录下所有的变化(谨慎操作),使用之前先git status

commit 提交到本地仓库

会产生版本信息,版本信息里包含本地的用户信息

第一次提交之前要先设置本地的用户信息

用户信息设置

直接修改配置文件

c:/Users/当前用户/.gitconfig (ini格式)

如果你没有这个文件可以新增一个,如果是windows,不允许创建没有名字的文件

如果window不允许创建,你可以打开git的bash → touch .gitconfig

[user]
  email = shitoushaoxia1993@gmail.com
  name = shitoushaoxia
  
[credential]   
    helper = store

使用命令修改 → 修改配置文件

git config --global user.name 值

git config --global user.email 值

git config --global credential.helper store 保存用户名密码的

执行提交

git commit -m “提交消息”

mg%2Fimage-20220105151758530.png&pos_id=img-L1P0fG6N-1706540292676)

提交消息:建议小组统一 一个格式 (具体格式都可以)

注意:commit的时候已经产生了版本信息,4492a54是版本号,版本号是唯一,当前仓库使用前7位就够了

push 本地仓库推送远程仓库

领先于远程仓库

git push

第一次push的时候需要输入码云的用户名和密码,输入git push时会弹出对话框

pull 拉取变化

落后于远程仓库

git pull

协作开发

加入仓库

加入到仓库中就可以push了

如果你的仓库是私有的,也能够看到你这个仓库

处理冲突

先提交的不处理冲突

后提交的处理冲突

开发习惯:晚上走之前建议提交一下(提交的时候保证你的程序能够编译

log 查看本地仓库日志

git log

过程1

结合上面的流程图看

过程2

repo1先执行了push

!

过程3

repo2执行pull

发现产生冲突了

过程4

修改冲突,并且重新提交

aster%2Fimg%2Fimage-20220106102329470.png&pos_id=img-7JwqTr8x-1706540292680)

过程5

repo2执行提交,提交最早想提交的部分和处理冲突的部分

!

过程6

repo1执行pull

没有冲突

Auto Merge

自动合并会让你提供合并信息(啥都不写都行) → 弹出vim编辑器

退出vim编辑器

  1. esc
  2. 冒号 wq
  3. 回车

忽略管理

你在工作产生了新的内容(变化 → 新增),git就会追踪这个变化

untracked files 还没有追踪

这个文件产生的变化我们不想给提交上去,我们可以做忽略管理

.gitignore → 要放在工作区的根目录

格式

文件名 单个文件

文件夹 某个文件夹下的文件

文件夹/

*.类型 某个类型的文件

注意事项:当前版本已经管理的文件,不能做忽略管理;只有去除掉才可以忽略管理(commit)

可以忽略自己(.gitignore),但是不建议大家忽略自己

newfile.txt 忽略单个文件

directory 忽略目录

runlist.txt

*.class 忽略了class文件

后悔药

![外

checkout 工作区里内容的撤销

git checkout 文件名

撤销完之后,内容还能找回吗? 不能 → 谨慎操作

reset 暂存区撤回到工作区

git reset

刚刚在工作区中新增了“松哥牛皮”

提交到暂存区之后,又使用reset给撤回到工作区,“松哥牛皮”还在不在 → 在,变化仍然存在

reset --hard 本地仓库的版本回退

git reset --hard 版本号

版本号可以写前七位,也可以写完整的

注意回退的是本地仓库,指回退当前的本地仓库,对远程仓库和其他本地仓库没有影响

!

如果想要回到最新的状态

可以使用pull命令

分支branch

git branch -a 查看分支

括号里的蓝色文字:指的是当前分支名,也意味着你处于工作区中

创建分支

创建远程仓库的分支

创建本地仓库的分支

起点是当前分支

git checkout -b 分支名 创建分支并切换到这个分支上

git checkout 分支名 创建分支并切换到这个分支上;切换分支

建立本地仓库的分支和远程仓库分支之间的联系

设置分支之间的联系

执行一次完整的提交

分支的合并

比如我们现在要将dev分支上的变化提交到master分支上 → 在master上合并dev

切换到master分支上

分支合并 git merge dev

推送远程 git push

如果要将分支A里的合并到分支B里 → 在B上合并A

1706540292682)]

设置分支之间的联系

[外链图片转存中…(img-1Klpl4tK-1706540292683)]

执行一次完整的提交

[外链图片转存中…(img-tjV0FsNm-1706540292683)]

[外链图片转存中…(img-9ZANon49-1706540292683)]

分支的合并

比如我们现在要将dev分支上的变化提交到master分支上 → 在master上合并dev

切换到master分支上

分支合并 git merge dev

推送远程 git push

[外链图片转存中…(img-pw2LMxaQ-1706540292683)]

如果要将分支A里的合并到分支B里 → 在B上合并A

目录
相关文章
|
开发工具 git
|
开发工具 git
git 的三剑客
git 的三剑客
55 0
|
开发工具 git 索引
初步认识git
你好看官,里面请!今天笔者讲的是初步认识git。不懂或者觉得我写的有问题可以在评论区留言,我看到会及时回复。 注意:本文仅用于学习参考,不可用于商业用途,如需转载请跟我联系。
92 2
初步认识git
|
存储 安全 Linux
|
Linux 开发工具 git
Git 是什么(Git 使用详细说明)
Git是一个开源的分布式版本控制系统,是目前世界上最先进、最流行的版本控制系统。
277 0
Git 是什么(Git 使用详细说明)
|
开发工具 git
git 常用小技巧
git 常用小技巧
|
存储 缓存 安全
看了这边文章,你还敢说你不会用git吗
看了这边文章,你还敢说你不会用git吗
875 0
|
网络协议 安全 Shell
1. Git 初识
集中式 or 分布式 集中化的版本控制系统( Centralized Version Control Systems,简称 CVCS) 缺点:最显而易见的缺点是中央服务器的单点故障。如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。要是中央服务器的磁盘发生故障,碰巧没做备份,或者备份不够及时,就会有丢失数据的风险。最坏的情况是彻底丢失整个项目的所有历史更改记录,而被客户端偶然提取出来的保存在本地的某些快照数据就成了恢复数据的希望。但这样的话依然是个问题,你不能保证所有的数据都已经有人事先完整提取出来过。本地版本控制系统也存在类似问题,只要整个项目的历史记录被保存在单一位置
164 0
1. Git 初识
|
开发工具 git
|
开发工具 git 索引