git的基本使用

版本:软件版本,文件版本,保存重要的历史记录,恢复数据

版本控制软件的基础功能:保存和管理文件,提供客户端工具访问,提供不同版本文件比对功能

一、git基础概念

1.git的三个区域

工作区,暂存区,git仓库

2.git的三种状态

已修改,已暂存,已提交

modified已修改了文件,但还没将修改的结果放到暂存区

staged已暂存,表示对已修改的文件当前版本做了标记,使之包含在下次提交的列表中

committed已提交,表示文件已经安全地保存在本地的git仓库中

3.git的工作流程

a.在工作区中修改文件

b.将想要下次提交的更改进行暂存

c.提交更新,找到暂存区的文件,将快照永久性存储到git仓库

二、安装并配置git

1.下载安装

https://git-scm.com/downloads

2.配置用户信息

git config --global user.name 'xxxxxxx'

git config --global user.email 'xxxxxxx.xxx'

3.检查配置信息

git config --list --global 查看所有的全局配置项

git config user.name

git config user.email

4.获取帮助信息

git help <verb>命令可在浏览器中打开帮助手册

git help config打开帮助手册

git config -h获取命令的快速参考

三、获取git仓库的两种方式

1.将尚未进行版本控制的本地目录转换为git仓库
2.从其他服务器克隆一个已存在的git仓库

四、在现有目录中初始化仓库

1在项目目录中,通过鼠标右键打开**"Git Bash Here"**
2.执行git init命令将当前的目录转化为git仓库

git init 命令会创建一个名为.git的 隐藏目录,这个.git目录就是当前项目的git仓库,里面包含了初始的必要文件,这些文件是git仓库的必要组成部分。

3.检查文件状态git status

git status命令查看文件处于什么状态,在状态报告中可以看到新建的文件出现在Untracked files(未跟踪的文件)下面,未跟踪文件意味着git在之前的快照中没有这些文件,git不会自动将之纳入跟踪范围,除非明确表示需要git跟踪管理该文件。

以精简方式显示文件的状态,未跟踪文件前面有红色的??标记

git status -s

git status --short

4.跟踪新文件git add

使用git add开始跟踪一个文件。

要跟踪index.html输入命令git add index.html即可。此时再运行git status命令,index.html文件已被跟踪,并处于暂存状态

5. 提交更新git commit

现在暂存区中有一个index.html文件等待被提交到git仓库中进行保存。可以执行git commit命令进行提交,其中-m选项后面是本次的提交消息,用来对提交内容做进一步表述。

提交成功后,再次检查文件的状态。

6.对已提交的文件进行修改

目前,index.html文件已经被git跟踪,并且工作区和git仓库中的index.html文件内容保持一致。当我们修改index.html文件内容之后,再次运行git status -s命令

修改过的,没有放入暂存区的文件前面有红色的M标记。

7.暂存已修改的文件git add

git add命令有3 个功能

a.跟踪新文件

b.把已跟踪的,且已修改的文件放到暂存区

c.把有冲突的文件标记为已解决状态

8.提交已暂存的文件git commit -m "提交消息"

再次运行git commit -m "提交消息"命令,即可将暂存区中的index.html的快照提交到git仓库中进行再次保存。

9.撤销对文件的修改

把工作区中对应文件的修改,还原成git仓库中所保存的版本。

操作的结果:所有的修改会丢失,且无法恢复,慎重操作

git checkout -- index.html

10.向暂存区中一次性添加多个文件git add .

git add .

将新增和修改后的文件加入暂存区

11.取消暂存的文件

git reset HEAD 要移出的文件名称

12. 跳过使用暂存区域git commit -a -m '"描述消息"

git标准的工作流程是工作区→暂存区→ git仓库,但有时这么做略显繁琐,此时可以跳过暂存区,直接将工作区中的修改提交到git仓库,这时候git仓库工作流程简化为了工作区→ git仓库。

在提交的时候,给git commit 加上 -a,git就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过git add步骤。

git commit -a -m '"描述消息"

13.移除文件git rm -f index.html

a.从git仓库和工作区中同时移出对应的文件

git rm -f index.html

b.只从git仓库中移出指定的文件,但保留工作区中对应的文件

git rm --cached index.html

14.忽略文件

文件.gitignore的格式规范

a.以#开头的是注释

b.以/结尾的是目录

c.以/开头防止递归

d.以!开头表示取反

e.可以使用glob模式进行文件和文件夹的匹配

glob模式是指简化了的正则表达式:*匹配零个或多个任意字符;[abc]匹配任何一个列在方括号的字符;?只匹配一个任意字符;[0-9]在方括号中使用短划线分割两个字符,表示所有在这两个字符范围内的都可以匹配;两个**表示匹配任意中间目录

javascript 复制代码
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
15.查看提交历史git log

git log 按照时间先后顺序列出所有的提交历史,最近的提交排在最上面

git log -2 只展示最新的两条提交记录,数字可以按需进行填写

git log -2 --pretty=oneline在一行上展示最近两天提交历史的信息

16.回退到指定的版本

git log --pretty=oneline在一行上展示所有的提交历史

git reset --hard <CommitID>根据指定的提交ID回退到指定版本

git reflog --pretty=oneline在旧版本中使用,查看命令操作的历史

git reset --hard <CommitID>再根据最近提交的Id,跳转到最新版本

五、本地仓库和远程仓库进行关联

1.新建空白远程仓库

官网:https://gitee.com/

2.远程仓库的两种访问方式(HTTPS,SSH)

a.HTTPS:零配置,但是每次访问时,需要重复输入Github的账号和密码才能访问成功

b.SSH:需要进行额外的配置,但是配置成功后,每次访问仓库时,不需要重复输入Github的账号和密码

3.基于HTTPS将本地仓库上传至Github

a.将本地仓库和远程仓库进行关联,并把远程仓库命名为origin

git remote add origin https://github.com/xxx/xxx.git

b.将本地仓库中的内容推送到远程的origin仓库中

git push -u origin master(第一次推送)

将本地最新代码同步到远程仓库中

git add 文件

git commit -m '描述信息'

git push origin master

4.生成SSH key

SSH key作用:实现本地仓库和Github之间的免登录的加密数据传输

两部分组成:id_rsa(私钥文件,存放于客户端的电脑中),id_rsa.pub(公钥文件,需要配置到github中)

打开git bash,输入ssh-keygen -t rsa -b 4096 -C '''注册邮箱',连续敲击回车3次,即可在C:/User/用户名文件夹/.ssh目录中生成id_rsa和id_rsa.pub两个文件

5.配置SSH key

打开id_rsa.pub文件,复制里面的内容

在浏览器中登录git,点击头像jian'tou→设置→安全设置/SSH公钥→添加公钥

6.检查github的SSH key是否配置成功

打开git bash,输入ssh -T git@github.com命令回车

7.基于SSH将本地仓库上传到github

git init 初始化本地仓库

git status -s

git add .

git status -s

git commit -m '描述信息'

git status -s

新建远程仓库

a.将本地仓库和远程仓库进行关联,并把远程仓库命名为origin

git remote add origin git@github.com:xxx/xxx.git

b.将本地仓库中的内容推送到远程的origin仓库中

git push -u origin master(第一次推送)

六.将远程仓库克隆到本地git clone

从其他服务器克隆一个已存在的git仓库

七、分支

1.master分支

在初始化git仓库时,git默认已经创建了一个名为master的分支。叫做主分支。

2.功能分支

程序员不能直接在master分支上进行功能开发,功能分支是专门用来开发新功能的分支,是临时从master分支上分叉出来的,当新功能完成后,最终需要合并到master主分支上。

3.查看分支列表git branch
4.创建新分支git branch 分支名称

基于当前分支,创建一个新的分支,此时,新分支中的代码和当前分支完全一样

执行完创建分支命令之后,用户当前所处的还是master分支

5.切换分支git checkout 分支名称
6.分支的快速创建和切换git checkout -b 分支名称
7.合并分支git merge

切换到master分支,在master分支上运行git merge命令

git checkout master

git merge login

8.删除分支git branch -d 分支名称
9.遇到冲突时的分支合并

如果在两个不同的分支中,对同一个文件进行了不同的修改,git就没法直接合并它们。需要打开这些包含冲突的文件然后手动解决

git checkout master

git merge reg

打开包含冲突的文件,手动解决冲突之后,再执行如下命令

git add .

git commit -m "解决了分支合并冲突"

八、远程分支操作

1.将本地分支推送至远端分支git push origin 分支名称

如果是第一次将本地分支推送至远程仓库需要运行如下命令,只在第一次推送的时候-u

git push -u 远程仓库的别名 本地分支名称:远程分支名称

如果希望远程分支的名称和本地分支名称保持一致,可以对命令进行简化

git push -u origin 分支名称

git push origin 分支名称

2.查看远程分支列表

git remote show 远程仓库名称

3.跟踪分支git checkout 远程分支名称

从远程仓库中,把对应的远程分支下载到本地仓库,保持本地分支和远程仓库分支名称相同

git checkout 远程分支名称

从远程仓库中,把对应的远程分支下载到本地仓库,并把下载的本地分支进行重命名

git checkout -b 本地分支名称 远程仓库名称/远程分支名称

4.拉取远程分支最新的代码

git pull

5.删除远程分支git push 远程仓库名称 --delete 远程分支名称

git push origin --delete login

九、其他

这些是在各种情况下使用的常见Git命令:

1.启动一个工作区(参见:git帮助教程)

clone将存储库克隆到一个新目录

init创建一个空的Git存储库或重新初始化一个现有的Git存储库

2.处理当前的变更(参见:git help everyday)

add将文件内容添加到索引中

mv移动或重命名文件、目录或符号链接

restore恢复工作树文件

rm从工作树和索引中删除文件

3.检查历史和状态(参见:git帮助修订)

bisect使用二进制搜索来查找引入bug的提交

diff显示提交、提交和工作树之间的更改

grep输出与模式匹配的行

log显示提交日志

show显示各种类型的对象

status显示工作树状态

4.成长,标记和调整你的共同历史

branch列出、创建、删除分支

commit提交将更改记录到存储库

merge将两个或多个开发历史记录连接在一起

rebase在另一个基本提示之上重新应用提交

reset将当前HEAD复位到指定状态

switch开关分支开关

tag创建、列出、删除或验证使用GPG签名的标签对象

5.协作(参见:git帮助工作流)

fetch从另一个存储库获取下载对象和引用

pull从另一个存储库或本地分支提取Fetch并与之集成

push更新远程参考和相关对象

'git help -a'和'git help -g'列出了可用的子命令和一些概念指南。参见'git help <command>'或'git help <concept>'阅读一个特定的子命令或概念。请参阅"git help git"了解系统概述。

相关推荐
特种加菲猫23 分钟前
构建完整工具链:GCC/G++ + Makefile + Git 自动化开发流程
linux·笔记·git·自动化
Franklin11 小时前
VS 版本更新git安全保护问题的解决
git
我是一只代码狗15 小时前
idea中合并git分支
git
我是一只代码狗15 小时前
idea中使用git
git·gitee·github
恋喵大鲤鱼15 小时前
git restore
git·git restore
李少兄16 小时前
Git Commit Message写错后如何修改?已Push的提交如何安全修复?
git·安全
Fireworkitte16 小时前
git stash
git
pe7er1 天前
git submodule简易指南
git
xiaocainiao8811 天前
Python 实战:构建 Git 自动化助手
git·python·自动化