作者:手机用户2602915211 | 来源:互联网 | 2023-08-23 17:07
最近在网上有个真实发生的案例比较火,说的是一个新入职的员工,不会用 Git 拉代码,第二天被开除。由此,可见 Git 对我们工作的重要性,无论是前端后端,都是离不开 Git 的,下面就让我们一探究竟吧。
Git 工作区域和流程
要想弄懂 Git 是怎么对我们的代码进行管理的,那首当其冲的是了解 Git 的工作区域是如何构成的。因为,只有彻底弄懂了 Git 工作区域的构成,你才可以在适当的区域使用合适的命令。如下图所示,此图包含了 Git 的4个工作区和一些常见的操作。
版本库 ( .git
)
当我们使用git管理文件时,比如 git init
时,这个时候,会多一个 .git
文件,我们把这个文件称之为版本库。
.git
文件另外一个作用就是它在创建的时候,会自动创建 master
分支,并且将 HEAD 指针指向 master
分支。
工作区 ( Workspace
)
工作区,就是平时进行开发改动的地方,是当前看到最新的内容,在开发的过程也就是对工作区的操作
暂存区 ( Index / Stage
)
当执行 git add
的命令后,工作区的文件就会被移入暂存区,暂存区标记了当前工作区中那些内容是被 Git 管理的,当完成某个需求或者功能后需要提交代码,第一步就是通过 git add
先提交到暂存区。
本地仓库 ( Repository
)
位于自己的电脑上,通过 git commit
提交暂存区的内容,会进入本地仓库。
远程仓库 ( Remote
)
用来托管代码的服务器,远程仓库的内容能够被分布在多个地点的处于协作关系的本地仓库修改,本地仓库修改完代码后通过 git push 命令同步代码到远程仓库。
举个例子,当我们使用GitHub托管我们项目时,它就是一个远程仓库。
Git 流程
- 在工作区开发,添加,修改文件。
- 将修改后的文件放入暂存区。
- 将暂存区域的文件提交到本地仓库。
- 将本地仓库的修改推送到远程仓库。
Git 分支
Git 是目前最流行的源代码管理工具。为规范开发,保持代码提交记录以及 git 分支结构清晰,方便后续维护,现规范 git 的相关操作。
Master 分支
master
为主分支,也是用于部署生产环境的分支,确保 master
分支稳定性, master
分支一般由 develop
以及 hotfix
分支合并,任何时间都不能直接修改代码。
Develop 分支
develop
为开发分支,始终保持最新完成以及 bug 修复后的代码,一般开发的新功能时,feature
分支都是基于 develop
分支下创建的。
Feature 分支
开发新功能时,以 develop
为基础创建 feature
分支。
分支命名: feature/
开头的为特性分支, 命名规则: feature/user_module
、 feature/cart_modulev
。
Release 分支
release
为预上线分支,发布提测阶段,会 release
分支代码为基准提测。当有一组 feature
开发完成,首先会合并到 develop
分支,进入提测时会创建 release
分支。
如果测试过程中若存在 bug 需要修复,则直接由开发者在 release
分支修复并提交。当测试完成之后,合并 release
分支到 master
和 develop
分支,此时 master
为最新代码,用作上线。
Hotfix 分支
分支命名: hotfix/
开头的为修复分支,它的命名规则与 feature
分支类似。线上出现紧急问题时,需要及时修复,以 master
分支为基线,创建 hotfix
分支,修复完成后,需要合并到 master
分支和 develop
分支。
Git 常用命令
Git 有多种使用方式。 你可以使用原生的命令行模式,也可以使用 GUI 模式,这些 GUI 软件也能提供多种功能。
如果你学会了在命令行下如何操作,那么你在操作 GUI 软件时应该也不会遇到什么困难,但是,反之则不成立。
git init
初始化本地仓库
git add
添加文件到暂存区
# 添加某个文件到暂存区,后面可以跟多个文件,以空格区分
git add xxx
# 添加当前文件夹下更改的所有文件到暂存区。
git add .
git commit
提交文件到本地仓库
# 将暂存区的文件提交到本地仓库,并记录下备注
git commit -m "you message"
# 等同于 git add . && git commit -m
git commit -am
# 对最近一次的提交的信息进行修改,此操作会修改commit的hash值
git commit --amend
git remote
# 查看所有远程主机
git remote
# 查看关联的远程仓库的详细信息
git remote -v
# 删除远程仓库的 “关联”
git remote rm projectname
# 链接本地仓库与远程仓库,origin 默认是远程主机名或者别名,url 是远程仓库的地址
git remote add origin url
git push
提交本地仓库的文件到远程仓库
# 也可以简化 git push <远程主机名>
git push <远程主机名> <本地分支名>:<远程分支名>
git pull
拉取远程仓库的文件
# 从远程仓库拉取代码并合并到本地,可简写为 git pull 等同于 git fetch && git merge
git pull <远程主机名> <远程分支名>:<本地分支名>
git fetch
与 git pull
不同的是 git fetch
操作仅仅只会拉取远程的更改,不会自动进行 merge
操作。对你当前的代码没有影响。
# 获取远程仓库特定分支的更新
git fetch <远程主机名> <分支名>
# 获取远程仓库所有分支的更新
git fetch --all
git branch
# 新建本地分支,但不切换
git branch
# 查看本地分支
git branch
# 查看远程分支
git branch -r
# 查看本地和远程分支
git branch -a
# 删除本地分支
git branch -D
# 重新命名分支
git branch -m
git checkout
# 切换到指定的分支
git checkout
# 创建并切换到指定的分支
git checkout -b
git status
要查看哪些文件处于什么状态。
# 得到一种更为紧凑的格式输出
git status -s | git status --short
git log
查看历史提交
# 显示每次提交的内容差异
git log -p
# 仅显示最近两次提交
git log -2
# 每次提交的简略的统计信息
git log --stat
指定使用不同于默认格式的方式展示提交历史,git log --pretty=oneline
git log --pretty
git stash
会有这么一个场景,现在你正在用你的 feature
分支上开发新功能。这时,生产环境上出现了一个 bug 需要紧急修复,但是你这部分代码还没开发完,不想提交,怎么办?这个时候可以用 git stash
命令先把工作区已经修改的文件暂存起来,然后切换到 hotfix
分支上进行 bug 的修复,修复完成后,切换回 feature
分支,从堆栈中恢复刚刚保存的内容。
# 把本地的改动暂存起来
git stash
# 执行存储时,添加备注,方便查找
git stash save "message"
# 应用最近一次暂存的修改,并删除暂存的记录
git stash pop
# 应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即 stash@{0},如果要使用其他个,git stash apply stash@{$num}
git stash apply
# 查看 stash 有哪些存储
git stash list
# 删除所有缓存的 stash
git stash clear
.gitignore
这个文件的作用,会去忽略一些不需要纳入Git管理这种,我们也不希望出现在未跟踪文件列表。
# 此行为注释 会被Git忽略
# 忽略 node_modules/ 目录下所有的文件
node_modules
# 忽略所有.vscode结尾的文件
.vscode
# 忽略所有.md结尾的文件
*.md
# 但README.md 除外
!README.md
# 会忽略 doc/something.txt 但不会忽略doc/images/arch.txt
doc/*.txt
# 忽略 doc/ 目录下所有扩展名为txt文件
doc/**/*.txt
总结
本文讲解了 Git 的基本用法,以及工作中使用较为高频的 Git 命令的用法,无论你是前端后端还是其它端的开发,日常工作中少不了对 Git 的使用,我们不仅要会用,还要用的漂亮,用的灵活,用的稳健。这样才能在和同事协作项目的时候更加得心应手,学会了本文这些 Git 的使用技巧后,在日常工作中多多练习,相信会给你带来很大的收获!
欢迎关注我的公众号“阿轩学Java”,原创技术文章第一时间推送。