Pro Git电子书的摘要1--思维导图

请添加图片描述
官方免费电子书中文版下载地址:https://git-scm.com/book/zh/v2
此书编写时,git版本是 2.8
本人的运行环境:win11 git 2.35.1

一、运行Git前的配置

运行Git前的配置
查看配置
$ git config --list --show-origin
原始值
/etc/gitconfig:system
/.config/git/config:global
.git/config:local
修改配置
$ git config --system/global/local user.name selfname
查看某命令的帮助
$ git config --help or $git help config

二、Git基础

Git基础
初始化
$ git init or git clone remote_url customName ,
得到 .git 子目录
检查当前目录下文件的状态
$ git status or $ git status -s
红色的表示有修改的文件,
绿色的表示已在暂存区的的文件,
untracked表示未跟踪的文件
up-to-date已同步最新
nothing to commit暂存区无文件
working directory clean工作区没有修改和新增
跟踪新文件\把修改放在暂存区
$ git add . or git add filename or pathName
清楚暂存区的修改
$ git restore --staged fileName or pathName
查看已暂存和未暂存的具体修改的内容
$ git diff
查看已暂存的将要添加到下次提交里的内容
$ git diff --staged
Git Diff 的插件版本
$ git difftool --tool-help
$ git difftool --tool=toolname
提交更新
$ git commit -m `xxx`
跳过add操作,直接提交更新
$ git commit -a -m `xxx` or $git commit --amend
移除暂存区的文件,
$ git rm filename <-force> 工作区的,直接手动删
把文件从 Git 仓库中删除\亦即从暂存区域移除,
但仍然希望保留在当前工作目录中
$ git rm --cached README
要在 Git 中对文件改名
$ git mv file_from file_to
查看提交历史$ git log -n
其中 n代表最近的n次记录
or $ git reflog
or $ git log --pretty=format:`%h %t %an %ne %cn %ce %s` --graph
还有$ git log --since=2.weeks
$ git log --since=`2008-01-15`
$ git log --author=4TLixueyi --all-match
$ git log -S function_name
为了避免显示的合并提交弄乱历史记录
可以为 log 加上 --no-merges 选项
取消暂存
git reset HEAD ...
撤消对文件的修改
即把文件在工作区中还原至上次commit后的状态
$ git checkout -- ...

请添加图片描述

请添加图片描述

$ git status -s
 M README
MM Rakefile
A  lib/git.rb
M  lib/simplegit.rb
?? LICENSE.txt

新添加的未跟踪文件前面有 ?? 标记,新添加到暂存区中的文件前面有 A 标记,修改过的文件前面有 M 标记。 输出中有两栏,左栏指明了暂存区的状态,右栏指明了工作区的状态。例如,上面的状态报告显示: README 文件在工作区已修改但尚未暂存,而 lib/simplegit.rb 文件已修改且已暂存。 Rakefile 文件已修改,暂存后又作了修改,因此该文件的修改中既有已暂存的部分,又有未暂存的部分。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rY0G2mMc-1649380378281)(./img/FileChangeStateLoop.png)]

请务必记得

如果你仍然想保留对那个文件做出的修改,但是现在仍然需要撤消,我们将会在 Git 分支 介绍保存进度与分支,这通常是更好的做法。
记住,在 Git 中任何 已提交 的东西几乎总是可以恢复的。 甚至那些被删除的分支中的提交或使用 --amend 选项覆盖的提交也可以恢复 (阅读 数据恢复 了解数据恢复)。 然而,任何你未提交的东西丢失后很可能再也找不到了。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k5FGszfT-1649387878755)(./img/FileChangeStateLoop.png)]

请务必记得
如果你仍然想保留对那个文件做出的修改,但是现在仍然需要撤消,我们将会在 Git 分支 介绍保存进度与分支,这通常是更好的做法。
记住,在 Git 中任何 已提交 的东西几乎总是可以恢复的。 甚至那些被删除的分支中的提交或使用 --amend 选项覆盖的提交也可以恢复 (阅读 数据恢复 了解数据恢复)。 然而,任何你未提交的东西丢失后很可能再也找不到了。

三、远程仓库

远程仓库origin的使用
手动添加远程仓库
$ git remote add shortOriginName originurl
查看简洁
$ git remote -v
拉取远程仓库中所有分支的引用.
但需要手动合并代码
$ git fetch shortOriginName
$ git pull
通常会从最初克隆的服务器上抓取数据
并自动尝试合并到当前所在的分支
推送到远程仓库
$ git push remoteName branchName
查看某个远程仓库
$ git remote show remoteName
远程仓库的重命名与移除
$ git remote rename originName newOriginName
移除一个远程仓库
$ git remote remove originName
or $ git remote rm originName

四、打标签

打标签
给仓库历史中的某一个提交打上标签 以示重要
查看标签
创建标签:
附注标签annotated/轻量标签llightweight
查看标签信息和与之对应的提交信息
$ git show v1.4
共享标签_必须显示
默认情况下
git push 命令不会传送标签到远程仓库服务器
删除标签
检出标签_修复v.14标签的BUG
$ git checkout -b branchName v1.4
$ git tag 以字母顺序列出标签
按照特定的模式查找标签
$ git tag -list `v1.8.5*`
附注标签-all
$ git tag -a v1.4 -m `my version 1.4`
轻量标签
$ git tag v1.4-lw
后期补打标签
$ git tag -a 1.2 commmit_id
共享特定标签
$ git push origin v1.4
共享所有标签
$ git push origin --tags
除掉本地仓库上的标签
$ git tag -d v1.40-lw
删除远程标签
$ git push origin --delete v.1.4-lw

在“分离头指针”状态下,如果你做了某些更改然后提交它们,标签不会发生变化, 但你的新提交将不属于任何分支,并且将无法访问,除非通过确切的提交哈希才能访问。因此,如果你需要进行更改,比如你要修复旧版本中的错误,那么通常需要创建一个新分支:

$ git checkout -b version2 v2.0.0
Switched to a new branch 'version2'  

如果在这之后又进行了一次提交,version2 分支就会因为这个改动向前移动, 此时它就会和 v2.0.0 标签稍微有些不同,这时就要当心了。

五、Git别名-设置

Git别名-设置
单一单词命令别名
$ git config --global alias.co checkout
多单词命令
外部工具命令别名
$ git config --global alias.br branch
$ git config --global alias.unstage `reset HEAD --`
$ git config --global alias.cmd `!cmd`

六、Git分支模型

请添加图片描述
请添加图片描述

分支模型
仅创建分支-不切换到新建分支
$ git branch branchName
分支切换_ HEAD 就指向 branchName 分支
$ git checkout branchName
commit操作
会改变HEAH指针的移动到新的commit_id对象
查看分叉历史记录
$ git log --pretty=oneline --decorate --graph --all
合并分支_branchName该分支合并到当前分支上
$ git merge branchName
快进合并fast-forward_
如果顺着一个分支走下去
能够到达另一个分支
指针右移
非快进合并 --no-ff
删除已被合并过的分支
$ git branch -d branchName
创建一个新分支后立即切换过去
$ git checkout -b newBranchName
分支命名
1-开发 branchname
2-更正问题iss53
3-紧急修复hotfix

非快进合并的原因和过程

在这种情况下,你的开发历史从一个更早的地方开始分叉开来(diverged)。 因为,master 分支所在提交并不是 iss53 分支所在提交的直接祖先,Git 不得不做一些额外的工作。 出现这种情况的时候,Git 会使用两个分支的末端所指的快照(C4 和 C5)以及这两个分支的公共祖先(C2),做一个简单的三方合并:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K7K3L3fV-1649387878757)(./img/merge–no-ff.png)]

和之前将分支指针向前推进所不同的是,Git 将此次三方合并的结果做了一个新的快照并且自动创建一个新的提交指向它。 这个被称作一次合并提交,它的特别之处在于他有不止一个父提交。
请添加图片描述

合并冲突

原因:如果你在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git 就没法干净的合并它们。
执行 $ git merge branchname后
此时 Git 做了合并,但是没有自动地创建一个新的合并提交。 Git 会暂停下来,等待你去解决合并产生的冲突。 你可以在合并冲突后的任意时刻使用 git status 命令来查看那些因包含合并冲突而处于未合并(unmerged)状态的文件。

冲突解决标记

Git 会在有冲突的文件中加入标准的冲突解决标记
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qdinV4r1-1649387878758)(./img/conflictFile.png)]

这表示 HEAD 所指示的版本就是当前分支所在的位置,在这个区段的上半部分(======= 的上半部分),而 iss53 分支所指示的版本在 ======= 的下半部分。 为了解决冲突,你必须选择使用由 ======= 分割的两部分中的一个,或者你也可以自行合并这些内容。 在你解决了所有文件里的冲突之后,对每个文件使用 git add 命令来将其标记为冲突已解决。 一旦暂存这些原本有冲突的文件,Git 就会将它们标记为冲突已解决。 你可以再次运行 git status 来确认所有的合并冲突都已被解决。如果你对结果感到满意,并且确定之前有冲突的的文件都已经暂存了,这时你可以输入 git commit 来完成合并提交。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值