Git22_Git常用命令3
Git提供了很多命令来完成相应的操作,为了方便学习,我们将这些命令进行了分类。在学习命令的过程中会讲解一些Git相关的概念。
在本章节我们会学习到如下一些命令和概念:
- 环境配置
- 获取Git仓库
- 工作目录、暂存区以及版本库概念
- Git工作目录下文件的两种状态
- 本地仓库操作
- 远程仓库的使用
- 分支
- 标签
一、环境配置
当安装Git后首先要做的事情是设置用户名称和email地址(跟码云注册账号无关)。这是非常重要的,因为每次Git提交都会使用该用户信息(标识用的可以任意设置)
任意目录下右键,选择“Git Bash Here”执行命令
设置用户信息 git config --global user.name “itcast” git config --global user.email “hello@itcast.cn” 查看配置信息 git config --list 先查看下有没有设置用户信息没有的话再进行设置 git config user.name
通过上面的命令设置的信息会保存在当前操作系统用户的.gitconfig文件中
二、获取Git仓库
要使用Git对我们的代码进行版本控制,首先需要获得Git仓库
获取Git仓库通常有两种方式:
- 在本地初始化一个Git仓库
- 从远程仓库克隆
1、在本地初始化一个Git仓库
执行步骤如下:
1. 在电脑的任意位置创建一个空目录(例如repo1)作为我们的本地Git仓库
2. 进入这个目录中,点击右键打开Git Bash Here窗口
3. 执行命令git init
git init
如果在当前目录中看到.git文件夹(此文件夹为隐藏文件夹)则说明Git仓库创建成功
2、从远程仓库克隆
可以通过Git提供的命令从远程仓库进行克隆,将远程仓库克隆到本地
命令形式为:
git clone 远程Git仓库地址
三、工作目录、暂存区以及版本库概念
为了更好的学习Git,我们需要了解Git相关的一些概念,这些概念在后面的学习中会经常提到
版本库:前面看到的.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等
工作目录(工作区):包含.git文件夹的目录就是工作目录,主要用于存放开发的代码
暂存区:.git文件夹中有很多文件,其中有一个index文件(二进制看不出内容)就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方
四、Git工作目录下文件的两种状态
Git工作目录下的文件存在两种状态:
- untracked 未跟踪(未被纳入版本控制)
- tracked 已跟踪(被纳入版本控制)
- Unmodified 未修改状态
- Modified 已修改状态
- Staged 已暂存状态
这些文件的状态会随着我们执行Git的命令发生变化
五、本地仓库操作
本地仓库的一些操作,具体包括:
- 查看文件状态
- 将未跟踪的文件加入暂存区
- 将暂存区的文件取消暂存
- 将暂存区的文件修改提交到本地仓库
- 删除文件
- 将文件添加至忽略列表
- 查看日志记录
1、查看文件状态
git status
git status -s 输出信息更简洁
2、将未跟踪的文件加入暂存区
git add 文件名称
将新创建的文件加入暂存区后查看文件状态
3、将暂存区的文件取消暂存
git reset HEAD 文件名称
将文件取消暂存后查看文件状态
4、将暂存区的文件修改提交到本地仓库
git commit -m "日志描述信息" [文件名称] 文件名称可有可无,没有就是将目录下所有文件提交。不加-m会自动打开一个编辑器把日志信息写进去。
git commit -a -m "日志描述信息" [文件名称] 将文件加入暂存区并提交到本地仓库
已修改状态:也需要先加到暂存区再进行提交
提交后修改hello.txt,并加到暂存区
提交hello.txt
5、删除文件
- 删除文件,提交到本地仓库(推荐)
git rm 文件名称
删除文件后查看文件状态
上面删除的只是工作区的文件,需要提交到本地仓库
- 在工作目录中进行删除,将文件加入暂存区然后提交
这种只能重新把文件加到暂存区,再去提交
6、将文件添加至忽略列表
一般我们总会有些文件无需纳入Git 的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以在工作目录中创建一个名为 .gitignore 的文件(文件名称固定),列出要忽略的文件模式。下面是一个示例:
# no .a files *.a # but do track lib.a, even though you're ignoring .a files above !lib.a # only ignore the TODO file in the current directory, not subdir/TODO /TODO # ignore all files in the build/ directory build/ # ignore doc/notes.txt, but not doc/server/arch.txt doc/*.txt # ignore all .pdf files in the doc/ directory doc/**/*.pdf
Windows系统中创建不了 .gitignore 的文件,因为Windows识别为后缀没有文件名
生成文件命令
touch 文件名称
修改.gitignore文件,添加内容:*.class,表示忽略跟踪.class结尾的文件
7、查看日志记录
git log
回车查看更多日志,输入q退出当前页面到命令页面
六、远程仓库操作
远程仓库的一些操作,具体包括:
- 查看远程仓库
- 添加远程仓库
- 从远程仓库克隆
- 移除无效的远程仓库
- 从远程仓库中抓取与拉取
- 推送到远程仓库
1、查看远程仓库
如果想查看已经配置的远程仓库服务器,可以运行 git remote 命令。 它会列出指定的每一个远程服务器的简写。
如果已经克隆了远程仓库,那么至少应该能看到 origin ,这是 Git 克隆的仓库服务器的默认名字
git remote 查询远程仓库服务器名 git remote -v 查询远程仓库服务器名和服务器地址 git remote show 远程仓库服务器名 查询指定的远程仓库服务器信息
2、添加远程仓库
添加一个新的远程 Git 仓库,同时指定一个可以引用的简写
git remote add 远程仓库服务器名 远程仓库url
3、从远程仓库克隆
如果你想获得一份已经存在了的 Git 仓库的拷贝,这时就要用到 git clone 命令。 Git 克隆的是该 Git 仓库服务器上的几乎所有数据(包括日志信息、历史记录等),而不仅仅是复制工作所需要的文件。 当你执行 git clone 命令的时候,默认配置下远程 Git 仓库中的每一个文件的每一个版本都将被拉取下来。
克隆仓库的命令格式是
git clone 远程仓库url
4、移除无效的远程仓库
如果因为一些原因想要移除一个远程仓库 ,可以使用 git remote rm
git remote rm 远程仓库服务器名
注意:此命令只是从本地移除远程仓库的记录,并不会真正影响到远程仓库
5、从远程仓库中抓取
git fetch 是从远程仓库获取最新版本到本地仓库,不会自动merge(在本地看不到,放在了.git/objects中)
通过git merge 手动的将文件合并到工作区中,这样就能在本地工作区中看到这些文件了
git fetch 远程仓库服务器名 远程仓库分支
git merge 远程仓库服务器名/仓库分支
6、从远程仓库中拉取
git pull 远程仓库服务器名 远程仓库分支
注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且本地仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories ),解决此问题可以在git pull命令后加入参数--allow-unrelated-histories
7、推送到远程仓库
当你想分享你的代码时,可以将其推送到远程仓库。 命令形式:
git push [remote-name] [branch-name]
分支要在本地和远程仓库都存在
首次推送需要输入用户名和密码
将本地b1分支推送到远程b1分支
七、Git分支
几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。Git 的master分支并不是一个特殊分支。 它跟其它分支没有区别。 之所以几乎每一个仓库都有 master 分支,是因为git init 命令默认创建它,并且大多数人都懒得去改动它。
在本章节我们会学习到关于分支的相关命令,具体如下:
- 查看分支
- 创建分支
- 切换分支
- 推送至远程仓库分支
- 合并分支
- 删除分支
1、查看分支
# 列出所有本地分支 $ git branch # 列出所有远程分支 $ git branch -r # 列出所有本地分支和远程分支 $ git branch -a
*master中的*表示当前处于哪个分支
2、创建分支
git branch 分支名称
3、切换分支
切换分支后,本地工作区中的文件及内容跟随分支变化
git checkout 分支名称
4、推送至远程仓库分支
git push 远程仓库服务器名称 分支名称
可以看到b1分支上的代码跟master的一样
5、合并分支
b3合并到master分支,首先需要切换到目标分支master分支,操作的都是本地分支
git merge 分支名称
有时候合并操作不会如此顺利。 如果你在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git 就没办法合并它们,同时会提示文件冲突。此时需要我们打开冲突的文件并修复冲突内容,最后执行git add命令来标识冲突已解决
冲突后打开文件,文件中两个分支中的内容都包含了并且新增了一些标签。手动处理完冲突后需要重新提交。
这些都是在本地仓库操作的,操作完需要将新添加的文件推送到远程分支
git push origin master
git push origin b1
6、删除分支
删除本地仓库分支:git branch -d 分支名称 强制删除本地分支:git branch -D 分支名称 删除远程仓库分支:git push 远程仓库名称 -d 分支名称
如果要删除的分支中进行了一些开发动作未推送到远程分支,此时执行上面的删除命令并不会删除分支,如果坚持要删除此分支,可以将命令中的-d参数改为-D
注:如果要删除远程仓库中的分支,可以使用命令git push origin –d branchName
7、综合应用
通过一个现实中的工作场景来对这些命令进行一个综合练习。
工作场景如下:
开发某个网站。
为实现某个新的需求,创建一个分支(dev)。
在这个分支上开展工作。
正在此时,你突然接到一个电话说有个很严重的问题需要紧急修补。 你将按照如下方式来处理:
切换到你的线上分支(master)。
为这个紧急任务新建一个分支(fix),并在其中修复它。
在测试通过之后,切换回线上分支(master),然后合并这个修补分支(fix)到master分支,最后将改动推送到线上分支(master)。
切换回你最初工作的分支上(dev),继续工作。
八、Git标签
像其他版本控制系统(VCS)一样,Git 可以给历史中的某一个提交打上标签,以示重要。 比较有代表性的是人们会使用这个功能来标记发布结点(v1.0 、v1.2等)。标签指的是某个分支某个特定时间点的状态。通过标签,可以很方便的切换到标记时的状态。
在本节中,我们将学习:
- 列出已有的标签
- 创建新标签
- 将标签推送至远程仓库
- 检出标签
- 删除标签
1、列出已有的标签
# 列出所有tag
$ git tag
# 查看tag信息
$ git show [tag]
2、创建新标签
# 新建一个tag
$ git tag [tagName]
3、将标签推送至远程仓库
tag代表的是当前分支文件的状态
# 提交指定tag
$ git push [remote-name] [tag]
4、检出标签
检出后自动切到新分支下
$ git checkout -b [new branch-name] [tag] 表示新建一个分支,指向某个tag
5、删除标签
# 删除本地tag $ git tag -d [tag] # 删除远程tag $ git push origin :refs/tags/[tag]
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步