Git 教程:解密 .gitignore 文件、合并分支、解决冲突、及 Git 帮助

Git 帮助

如果你忘记了命令或命令的选项,你可以使用 Git 帮助。

在命令行中,有几种不同的使用帮助命令的方式:

  • git command -help - 查看特定命令的所有可用选项
  • git help --all - 查看所有可能的命令

让我们看看不同的命令。

Git -help 查看特定命令的选项

任何时候,如果你需要帮助来记住特定命令的选项,你可以使用 git command -help

这将显示特定命令的所有可用选项:

1usage: git commit [] [--] ... 2 3 -q, --quiet suppress summary after successful commit 4 -v, --verbose show diff in commit message template 5 6Commit message options 7 -F, --file read message from file 8 --author override author for commit 9 --date override date for commit 10 -m, --message 11 commit message 12 -c, --reedit-message 13 reuse and edit message from specified commit 14 -C, --reuse-message 15 reuse message from specified commit 16 --fixup use autosquash formatted message to fixup specified commit 17 --squash use autosquash formatted message to squash specified commit 18 --reset-author the commit is authored by me now (used with -C/-c/--amend) 19 -s, --signoff add a Signed-off-by trailer 20 -t, --template 21 use specified template file 22 -e, --edit force edit of commit 23 --cleanup how to strip spaces and #comments from message 24 --status include status in commit message template 25 -S, --gpg-sign[=] 26 GPG sign commit 27 28Commit contents options 29 -a, --all commit all changed files 30 -i, --include add specified files to index for commit 31 --interactive interactively add files 32 -p, --patch interactively add changes 33 -o, --only commit only specified files 34 -n, --no-verify bypass pre-commit and commit-msg hooks 35 --dry-run show what would be committed 36 --short show status concisely 37 --branch show branch information 38 --ahead-behind compute full ahead/behind values 39 --porcelain machine-readable output 40 --long show status in long format (default) 41 -z, --null terminate entries with NUL 42 --amend amend previous commit 43 --no-post-rewrite bypass post-rewrite hook 44 -u, --untracked-files[=] 45 show untracked files, optional modes: all, normal, no. (Default: all) 46 --pathspec-from-file 47 read pathspec from file 48 --pathspec-file-nul with --pathspec-from-file, pathspec elements are separated with NUL character 49Note: You can also use --help instead of -help to open the relevant Git manual page

Git help --all 查看所有可能的命令

要列出所有可能的命令,可以使用 help --all 命令:

注意:这将显示一个非常长的命令列表

1$ git help --all

这将显示所有可能的命令列表。

合并分支和解决冲突

紧急修复已经准备好,现在让我们合并 master 和 emergency-fix 分支。

首先,我们需要切换到 master 分支:

git checkout master

现在,我们将当前分支(master)与 emergency-fix 合并:

1git merge emergency-fix
1更新 09f4acd..dfa79db 2快进 3index.html | 2 +- 41 file changed, 1 insertion(+), 1 deletion(-)

由于 emergency-fix 分支直接来自于 master,并且在我们工作时没有对 master 进行其他更改,Git 将其视为 master 的延续。因此,可以“快进”,将 master 和 emergency-fix 指向相同的提交。

由于 master 和 emergency-fix 现在本质上相同,我们可以删除 emergency-fix,因为它不再需要:

1git branch -d emergency-fix
1已删除分支 emergency-fix(是 dfa79db)。

合并冲突

现在我们可以切换到 hello-world-images 并继续工作。添加另一个图像文件(img_hello_git.jpg)并更改 index.html,以便显示它:

1git checkout hello-world-images
1<!DOCTYPE html> 2<html> 3<head> 4<title>Hello World!</title> 5<link rel="stylesheet" href="bluestyle.css"> 6</head> 7<body> 8 9<h1>Hello world!</h1> 10<div><img src="img_hello_world.jpg" alt="Hello World from Space" style="width:100%;max-width:960px"></div> 11<p>This is the first file in my new Git Repo.</p> 12<p>A new line in our file!</p> 13<div><img src="img_hello_git.jpg" alt="Hello Git" style="width:100%;max-width:640px"></div> 14 15</body> 16</html>

现在,我们已经完成了在该分支上的工作,可以为该分支暂存并提交:

1git add --all 2git commit -m "added new image"

我们看到 index.html 在两个分支中都发生了更改。现在我们准备将 hello-world-images 合并到 master 中。但是,我们最近在 master 中所做的更改会发生什么?

1git checkout master 2git merge hello-world-images

自动合并 index.html

合并冲突(内容):index.html 中的合并冲突

自动合并失败;解决冲突,然后提交结果。

合并失败,因为在 index.html 的不同版本之间存在冲突。让我们来检查状态:

1git status 2 3在 master 分支上,你有未解决的路径。 4 5(解决冲突并运行 "git commit") 6 7(使用 "git merge --abort" 中止合并) 8 9要提交的更改: 10 11新文件:img\_hello\_git.jpg 12 13新文件:img\_hello\_world.jpg 14 15未解决的路径: 16 17(使用 "git add ..." 标记解决) 18 19两者修改: index.html

这证实了 index.html 中存在冲突,但图像文件已经准备好并暂存以进行提交。

因此,我们需要解决冲突。在编辑器中打开文件:

1<!DOCTYPE html> 2<html> 3<head> 4<title>Hello World!</title> 5<link rel="stylesheet" href="bluestyle.css"> 6</head> 7<body> 8 9<h1>Hello world!</h1> 10<div><img src="img_hello_world.jpg" alt="Hello World from Space" style="width:100%;max-width:960px"></div> 11<p>This is the first file in my new Git Repo.</p> 12<<<<<<< HEAD 13<p>This line is here to show how merging works.</p> 14======= 15<p>A new line in our file!</p> 16<div><img src="img_hello_git.jpg" alt="Hello Git" style="width:100%;max-width:640px"></div> 17>>>>>>> hello-world-images 18 19</body> 20</html>

我们可以看到不同版本之间的差异,并按照我们的需求进行编辑:

1<!DOCTYPE html> 2<html> 3<head> 4<title>Hello World!</title> 5<link rel="stylesheet" href="bluestyle.css"> 6</head> 7<body> 8 9<h1>Hello world!</h1> 10<div><img src="img_hello_world.jpg" alt="Hello World from Space" style="width:100%;max-width:960px"></div> 11<p>This is the first file in my new Git Repo.</p> 12<p>This line is here to show how merging works.</p> 13<div><img src="img_hello_git.jpg" alt="Hello Git" style="width:100%;max-width:640px"></div> 14 15</body> 16</html>

现在我们可以暂存 index.html 并检查状态:

1git add index.html 2git status

在 master 分支上,所有冲突都已解决,但你仍在合并中。

(使用 "git commit" 完成合并)

要提交的更改:

新文件:img_hello_git.jpg

新文件:img_hello_world.jpg

修改: index.html

冲突已解决,我们可以使用提交来完成合并:

1git commit -m "merged with hello-world-images after fixing conflicts"

然后删除 hello-world-images 分支:

1git branch -d hello-world-images
1已删除分支 hello-world-images(是 1f1584e)。

现在你对分支和合并的工作方式有了更好的了解。是时候开始与远程仓库一起工作了!

Git .gitignore 文件:创建、示例规则和模式匹配

.gitignore 文件是用于指定 Git 忽略的文件和文件夹的配置文件。这意味着 Git 不会跟踪或包含在版本控制中,但它们仍然存在于你的工作目录中。以下是关于.gitignore文件的详细信息:

创建**.gitignore**文件

要创建一个.gitignore文件,请按照以下步骤操作:

  1. 打开终端或命令行工具。
  2. 导航到你的 Git 存储库的根目录。
  3. 创建.gitignore文件。你可以使用以下命令:touch .gitignore。这将在存储库的根目录中创建一个.gitignore文件。
  4. 使用文本编辑器打开.gitignore文件,你可以添加你要忽略的文件和文件夹的规则。

示例 .gitignore 文件

下面是一个示例.gitignore文件的内容,演示了一些忽略规则:

1# 忽略所有 .log 文件 2*.log 3 4# 忽略任何名为 "temp" 的目录中的所有内容 5/temp/ 6 7# 忽略所有 .zip 和 .rar 压缩文件 8*.zip 9*.rar 10 11# 忽略特定文件 12config.txt 13 14# 忽略特定文件夹及其内容 15bin/ 16build/

这个.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的安装和下载

原文链接:线上代码仓库创建好了之后,我们还需要通过git命令进行操作,但是在命令行cmd中输入git开头的命令时会提示不存在,所以我们需要安装git命令行工具。官方下载地址https://gitscm.com/downloads验证git安装完成后我们需要

Linux最常用150个命令汇总

Linux最常用150个命令汇总命令功能说明线上查询及帮助命令(2个)man查看命令帮助,命令的词典,更复杂的还有info,但不常用。help查看Linux内置命令的帮助,比如cd命令。文件和目录操作命令(18个)ls全拼list,功能是列出目录的内容及其内容属性信息。cd全拼

GIT命令大全

Git命令大全Git最小配置某账号下所有的Git仓库都有效gitconfigglobaluser.name'您的名称'gitconfigglobaluser.email'您的Email'只对当前Git仓库有效gitconf

Linux查看内置命令和非内置命令帮助的几种方法(man、help、info)

!(https://oscimg.oschina.net/oscnet/53cb7c40ce2945df9de5490f1d07e660.jpg)内置命令就是shell内核自带的,因为shell当中自己要进行管理,那么就需要一些命令进行管理,不同的shell肯定有不同的shell命令,我们用type命令就可以看到其的类型,内置shell命令其

Git的所有命令

 git(1)ManualPageNAMEgitthestupidcontenttrackerSYNOPSIS_git_\version\\help\\c\\execpath\\\\htmlpat

C++之虚函数与虚继承详解

准备工作1、VS2012使用命令行选项查看对象的内存布局微软的VisualStudio提供给用户显示C对象在内存中的布局的选项:/d1reportSingleClassLayout。使用方法很简单,直接在\项目P\选项下找到“visual属性”后点击即可。切换到cpp文件所在目录下输入如下的命令即可    c