Git 教程:解密 .gitignore 文件、合并分支、解决冲突、及 Git 帮助
Git 帮助
如果你忘记了命令或命令的选项,你可以使用 Git 帮助。
在命令行中,有几种不同的使用帮助命令的方式:
git command -help
- 查看特定命令的所有可用选项git help --all
- 查看所有可能的命令
让我们看看不同的命令。
Git -help 查看特定命令的选项
任何时候,如果你需要帮助来记住特定命令的选项,你可以使用 git command -help
:
这将显示特定命令的所有可用选项:
usage: git commit [] [--] ...
-q, --quiet suppress summary after successful commit
-v, --verbose show diff in commit message template
Commit message options
-F, --file read message from file
--author override author for commit
--date override date for commit
-m, --message
commit message
-c, --reedit-message
reuse and edit message from specified commit
-C, --reuse-message
reuse message from specified commit
--fixup use autosquash formatted message to fixup specified commit
--squash use autosquash formatted message to squash specified commit
--reset-author the commit is authored by me now (used with -C/-c/--amend)
-s, --signoff add a Signed-off-by trailer
-t, --template
use specified template file
-e, --edit force edit of commit
--cleanup how to strip spaces and #comments from message
--status include status in commit message template
-S, --gpg-sign[=]
GPG sign commit
Commit contents options
-a, --all commit all changed files
-i, --include add specified files to index for commit
--interactive interactively add files
-p, --patch interactively add changes
-o, --only commit only specified files
-n, --no-verify bypass pre-commit and commit-msg hooks
--dry-run show what would be committed
--short show status concisely
--branch show branch information
--ahead-behind compute full ahead/behind values
--porcelain machine-readable output
--long show status in long format (default)
-z, --null terminate entries with NUL
--amend amend previous commit
--no-post-rewrite bypass post-rewrite hook
-u, --untracked-files[=]
show untracked files, optional modes: all, normal, no. (Default: all)
--pathspec-from-file
read pathspec from file
--pathspec-file-nul with --pathspec-from-file, pathspec elements are separated with NUL character
Note: You can also use --help instead of -help to open the relevant Git manual page
Git help --all 查看所有可能的命令
要列出所有可能的命令,可以使用 help --all
命令:
注意:这将显示一个非常长的命令列表
$ git help --all
这将显示所有可能的命令列表。
合并分支和解决冲突
紧急修复已经准备好,现在让我们合并 master 和 emergency-fix 分支。
首先,我们需要切换到 master 分支:
git checkout master
现在,我们将当前分支(master)与 emergency-fix 合并:
git merge emergency-fix
更新 09f4acd..dfa79db
快进
index.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
由于 emergency-fix 分支直接来自于 master,并且在我们工作时没有对 master 进行其他更改,Git 将其视为 master 的延续。因此,可以“快进”,将 master 和 emergency-fix 指向相同的提交。
由于 master 和 emergency-fix 现在本质上相同,我们可以删除 emergency-fix,因为它不再需要:
git branch -d emergency-fix
已删除分支 emergency-fix(是 dfa79db)。
合并冲突
现在我们可以切换到 hello-world-images 并继续工作。添加另一个图像文件(img_hello_git.jpg)并更改 index.html,以便显示它:
git checkout hello-world-images
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link rel="stylesheet" href="bluestyle.css">
</head>
<body>
<h1>Hello world!</h1>
<div><img src="img_hello_world.jpg" alt="Hello World from Space" style="width:100%;max-width:960px"></div>
<p>This is the first file in my new Git Repo.</p>
<p>A new line in our file!</p>
<div><img src="img_hello_git.jpg" alt="Hello Git" style="width:100%;max-width:640px"></div>
</body>
</html>
现在,我们已经完成了在该分支上的工作,可以为该分支暂存并提交:
git add --all
git commit -m "added new image"
我们看到 index.html 在两个分支中都发生了更改。现在我们准备将 hello-world-images 合并到 master 中。但是,我们最近在 master 中所做的更改会发生什么?
git checkout master
git merge hello-world-images
自动合并 index.html
合并冲突(内容):index.html 中的合并冲突
自动合并失败;解决冲突,然后提交结果。
合并失败,因为在 index.html 的不同版本之间存在冲突。让我们来检查状态:
git status
在 master 分支上,你有未解决的路径。
(解决冲突并运行 "git commit")
(使用 "git merge --abort" 中止合并)
要提交的更改:
新文件:img\_hello\_git.jpg
新文件:img\_hello\_world.jpg
未解决的路径:
(使用 "git add ..." 标记解决)
两者修改: index.html
这证实了 index.html 中存在冲突,但图像文件已经准备好并暂存以进行提交。
因此,我们需要解决冲突。在编辑器中打开文件:
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link rel="stylesheet" href="bluestyle.css">
</head>
<body>
<h1>Hello world!</h1>
<div><img src="img_hello_world.jpg" alt="Hello World from Space" style="width:100%;max-width:960px"></div>
<p>This is the first file in my new Git Repo.</p>
<<<<<<< HEAD
<p>This line is here to show how merging works.</p>
=======
<p>A new line in our file!</p>
<div><img src="img_hello_git.jpg" alt="Hello Git" style="width:100%;max-width:640px"></div>
>>>>>>> hello-world-images
</body>
</html>
我们可以看到不同版本之间的差异,并按照我们的需求进行编辑:
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link rel="stylesheet" href="bluestyle.css">
</head>
<body>
<h1>Hello world!</h1>
<div><img src="img_hello_world.jpg" alt="Hello World from Space" style="width:100%;max-width:960px"></div>
<p>This is the first file in my new Git Repo.</p>
<p>This line is here to show how merging works.</p>
<div><img src="img_hello_git.jpg" alt="Hello Git" style="width:100%;max-width:640px"></div>
</body>
</html>
现在我们可以暂存 index.html 并检查状态:
git add index.html
git status
在 master 分支上,所有冲突都已解决,但你仍在合并中。
(使用 "git commit" 完成合并)
要提交的更改:
新文件:img_hello_git.jpg
新文件:img_hello_world.jpg
修改: index.html
冲突已解决,我们可以使用提交来完成合并:
git commit -m "merged with hello-world-images after fixing conflicts"
然后删除 hello-world-images 分支:
git branch -d hello-world-images
已删除分支 hello-world-images(是 1f1584e)。
现在你对分支和合并的工作方式有了更好的了解。是时候开始与远程仓库一起工作了!
Git .gitignore 文件:创建、示例规则和模式匹配
.gitignore
文件是用于指定 Git 忽略的文件和文件夹的配置文件。这意味着 Git 不会跟踪或包含在版本控制中,但它们仍然存在于你的工作目录中。以下是关于.gitignore
文件的详细信息:
创建**.gitignore
**文件
要创建一个.gitignore
文件,请按照以下步骤操作:
- 打开终端或命令行工具。
- 导航到你的 Git 存储库的根目录。
- 创建
.gitignore
文件。你可以使用以下命令:touch .gitignore
。这将在存储库的根目录中创建一个.gitignore
文件。 - 使用文本编辑器打开
.gitignore
文件,你可以添加你要忽略的文件和文件夹的规则。
示例 .gitignore
文件
下面是一个示例.gitignore
文件的内容,演示了一些忽略规则:
# 忽略所有 .log 文件
*.log
# 忽略任何名为 "temp" 的目录中的所有内容
/temp/
# 忽略所有 .zip 和 .rar 压缩文件
*.zip
*.rar
# 忽略特定文件
config.txt
# 忽略特定文件夹及其内容
bin/
build/
这个.gitignore
文件包含了各种忽略规则,例如忽略所有.log
文件、名为"temp"的目录、.zip
和.rar
压缩文件、config.txt
文件以及bin/
和build/
文件夹及其内容。
.gitignore
文件的规则如下:
- 模式匹配:
.gitignore
中的规则使用模式匹配来匹配文件和文件夹。 - 行注释:以
#
开头的行将被视为注释。 - 文件匹配:你可以使用
*
来匹配任何字符,?
来匹配单个字符,[]
来匹配字符集,[!...]
来否定字符集。 - 目录匹配:如果模式以
/
结尾,则该模式仅匹配目录。 - 递归匹配:使用``来匹配任何子目录。
- 否定规则:使用
!
符号来否定已定义的规则。
示例规则包括:
*.log
:忽略所有扩展名为.log
的文件。/temp/
:忽略名为"temp"的目录及其内容。bin/
:忽略名为"bin"的文件夹及其内容。!important.log
:忽略所有.log
文件,但不包括名为"important.log"的文件。
通过编辑.gitignore
文件,你可以自定义哪些文件和文件夹应该被 Git 忽略,以便它们不会包含在版本控制中。这对于避免将不必要的或敏感文件提交到版本控制中非常有用。
最后
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding
,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎 点赞、收藏、关注
Git 教程:解密 .gitignore 文件、合并分支、解决冲突、及 Git 帮助的更多相关文章
- git使用,多分支合并代码解决冲突,git删除远程分支,删除远程master默认分支方法
git使用,多分支合并代码解决冲突,git删除远程分支,删除远程master默认分支方法提交代码流程:1.先提交代码到自己分支上2.切换到devlop拉取代码合并到当前分支3.合并后有变动的推送到自己 ...
- 新手:git回滚代码,合并代码解决冲突
回滚到某个tag: git reset --hard 70438034dc git push -f 合并---解决冲突---提交: Step 1. Fetch and check out the br ...
- Git合并分支或者冲突
假设冲突文件是 test/TestCase.php 下面分5种情况讨论. 1.本地不变. 然后远程别人有更新. git pull 这种最简单,没有冲突,本地工作区直接更新 2.我本 ...
- Git 忽略规则 .gitignore文件 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 版本控制之三:SVN合并及解决冲突(转)
转自 http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2408089.html 接下来,试试用TortoiseSVN修改文件,添加文件,删除 ...
- Git项目管理出现 .gitignore文件不起作用的解决
在git管理项目的代码过程中总会有需要忽略的目录或者文件,比如编译过程中产生的目录和文件,这时候就需要 .gitignore来进行目录或文件的忽略了. 如果没有 .gitignore文件,可以自己手工 ...
- git项目.gitignore文件不生效解决办法
配置好.gitignore文件如下: HELP.md /target/ !.mvn/wrapper/maven-wrapper.jar ### STS ### .apt_generated .clas ...
- SourceTree使用详解(连接远程仓库,克隆,拉取,提交,推送,新建/切换/合并分支,冲突解决)
前言: 俗话说的好工欲善其事必先利其器,Git分布式版本控制系统是我们日常开发中不可或缺的.目前市面上比较流行的Git可视化管理工具有SourceTree.Github Desktop.Tortois ...
- Git 初始化项目、创建合并分支、回滚等常用方法总结
就在刚才查看资料时候, 看见一句话, 写的特别好: 当我的才华撑不起我的梦想的时候, 应该安静下来学习 配上我最喜欢动漫的一个角色: 红莲 1. Git 初始化项目 1). 创建新的知识库 echo ...
- git中使用.gitignore文件
在进行协作开发代码管理的过程中,常常会遇到某些临时文件.配置文件.或者生成文件等,这些文件由于不同的开发端会不一样,如果使用git add . 将所有文件纳入git库中,那么会出现频繁的改动和push ...
随机推荐
- 【会员题】253. 会议室 II
会议室II 给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间s1,e1,s2,e2]..](si<ei) ,为避免会议冲突,同时要考虑充分 利用会议室资源,请你计算至少需要多少间 ...
- 【算法day1】复杂度和简单排序算法(1)
复杂度和简单排序算法 时间复杂度 以一个排序(选择排序)操作举例 假设我有一个数组,我要找出其中的最小值放到0的位置上 那么 第一次我会遍历数组中N个数(在0位置处),找出最小的数交换到0位置[看了( ...
- Python函数每日一讲 - 简洁快速学会globals()函数
引言 在 Python 中,globals() 函数是一个强大的工具,它允许您访问全局命名空间中的所有变量和函数.本文将深入探讨 globals() 函数的语法.用法以及实际应用场景,帮助大家更好地理 ...
- 第124篇: 期约Promise基本方法
好家伙,本篇为<JS高级程序设计>第十章"期约与异步函数"学习笔记 1.异步编程 同步行为和异步行为的对立统一是计算机科学的一个基本概念. 特别是在 JavaScr ...
- 【Azure 存储服务】使用REST API操作Azure Storage Table,删除数据(Delete Entity)
问题描述 使用Azure Storage Table的REST API,实现根据过滤条件删除满足条件的数据,调用方法为 Delete Entity (Azure Storage) 问题实现 第一步: ...
- 【Azure 应用服务】App Service 通过门户配置数据库连接字符串不生效
应用设置 Application Setting 在应用服务中,应用设置是作为环境变量传递给应用程序代码的变量. 对于 Linux 应用和自定义容器,应用服务使用 --env 标志将应用设置传递到容器 ...
- 图数据库|Nebula Graph v3.1.0 性能报告
本文首发于 Nebula Graph Community 公众号 本文系 Nebula Graph 发行版 v3.1.0 的性能测试报告. 本文目录 测试环境 测试数据 关于 LDBC-SNB 测试说 ...
- 图数据库实操:用 Nebula Graph 破解成语版 Wordle 谜底
本文首发于 Nebula Graph Community 公众号 春节期间如果有小伙伴玩过 Wordle 这个火爆社交媒体的猜词游戏,可能对成语版本的汉兜有所耳闻.在玩汉兜过程中,我发现用 Nebul ...
- Java 临时笔记
1 //srand((unsignedint)time(NULL)); C 2 //获取随机数 10-99 3 4 //int value = (int)(Math.random() * 90+10) ...
- Word中的公式复制到Visio中乱码问题
将word中编辑好的公式复制到Visio中出现乱码问题 如图所示问题: 解决方案(Visio 选项 --> 高级 --> 显示 ->勾选禁用增强元文件优化) 具体的公式导入和解决操作 ...