git merge 回退_Git 基础学习总结2(学不会你锤我)

638dc55dc4f3416e985533533ff639ba.png
作者序:我在知乎上搜索了有关 Git 的学习文章,虽然点赞很多但我认为他们写得并不好,内容不够详尽,排版让人看得疲劳,所以我决定自己写几篇关于 Git 的学习文章。当别人提供的不好用就自己创造一个新的,这也是 Git 诞生的原因之一

前文链接:

Git 基础学习总结(学不会你锤我)​zhuanlan.zhihu.com

1. 创建仓库

25631fa1225652b76bbaeef0a087d787.png

方法一:克隆

通常情况下,仓库已经建好,我们需要从 gitlab 或者 github 上将仓库下载到本地

$ git clone <url> <custom_repository_name>

默认创建的文件夹名称为仓库名,如需自定可以替换 <custom_repository_name>

⚠️ 这个目录下不能有与仓库同名的文件夹,如果有需要保证文件夹内是空的,否则报错

7361a3a3af494a431df7d74eb1873984.png

方法二:初始化+添加

如果是首次创建仓库,则需要先在 github 或 gitlab 上创建一个仓库,创捷完成后,会生成一个地址,在本地找个空目录,

# 创建文件,或把项目需要的文件挪进来
$ ...

2. 提交更新

如前文所述,git 的文件状态会在三种状态间不断转换:

73e8e43a88b694db8e6388c874e1971e.png
点击可查看高清大图~~~

检查当前文件状态 git status

# 显示简洁版
$ git status -s 
$ git status --short 
M apps/api/forms.py
M apps/api/views.py

查看未暂存的文件变更 git diff

# 查看合并引入的内容
$ git diff --ours

加入暂存区 git add

$ git add <file-1>  <file-2>   
----------------------------
-i, --interactive    交互式处理文件,避免输入文件名
-u, --update         将 modified 的文件加到暂存区
-p, --patch          加patch

提交 git commit

$ git commit -m <message>

Note: 提交信息应少于 50 个字符(25个汉字)

提交的时候,若需要忽略某些文件,如.pyc,local_settings.py等,可以设定.gitnore文件

.gitignore 语法:

  • 所有空行或者以 # 开头的行都会被 Git 忽略
  • 可以使用标准的 glob 模式匹配
  • 匹配模式可以以(/)开头防止递归
  • 匹配模式可以以(/)结尾指定目录
  • 要忽略指定模式以外的文件或目录,可以在模式前加上 !取反

删除文件 git rm

删除某个 Tracked文件 不追踪 + 删除文件

$ git rm <filename>

删除某个既是 staged 也是 modified 的文件只能 --force

$ git rm -f <filename>

不追踪 + 保留文件 Tracked ---> Untracked

$ git rm --cached <filename>

重命名/移动 git mv

$ git mv old.txt  new.text

实际上,git 执行了下列三项指令

$ mv old.txt new.text
$ git rm old.txt
$ git add new.text

暂存文件 git stash

$ git stash
$ git stash save
-------------------------
--patch            加 patch
--keep-index  不 stash 已暂存的文件
--include-untracked    包含未追踪的文件

查看暂存区

$ git stash list

恢复暂存的修改

{n

移除指定暂存

{n

直接将暂存移入新分支

[<stash>

清理文件 git clean

$ git clean
--------------------
-f       直接删除未追踪的文件
-f -d    直接删除未追踪的文件和目录
-n       列出执行git clean将会被删除的文件
-i       交互式删除

⚠️注意:clean 不会删除 .gitignore排除的文件,删除排除文件加上 -x

$ git clean -f -d -x

3. 撤销

280e7d4acd18257ac47e4d87dca553ec.png
点击可查看高清大图~~~

修改最近一次提交的备注

$ git commit --amend

⚠️ 如果提交已经push到仓库,修改备注之后,需要执行git push -f,普通 push 会失败

f8bb1a32d01a8e40f484d2d209ea6bbb.png
$ git push -f

修改多个提交的备注 可用git rebase 解决

撤销修改/回退版本

# 将某个文件回退到最新版本
$ git checkout HEAD <filename>
  • --hard 选项是“硬”回退,回退不保留当前的任何修改
  • -- soft 选项时“软”回退,回退并保留修改(即索引和工作目录的内容不变)

040cf422894c48374849d61e7f608207.png
三种选项对项目的影响,mixed会重置索引

git resetHEAD 指针指向指定的提交后,原始指针另存为 ORIG_HEAD

dc647aaec860f249404fd860636c1cf7.png

4.查看历史

f74f8ba086842da667a9f6b5e4dcfc67.png
点击可查看高清大图~~~

通常情况下 git log 即可,当然也有一些实用的选项

$ git log -g          查看message与reflog
$ git log -p          查看各个差异
$ git log -p -2      指定显示数量
$ git log --stat     查看简略增删行统计
$ git log --graph    展示分支合并示意图与对应提交详情

显示的格式可以通过 --pretty 参数自定义

=oneline

a982ae178a145381d816063804f27139.png

按日期或作者筛选 log

写工作日志或月总结,忘了上周自己做了哪些项目,此时用这项指令很有用

=2019-06-01 --until

快速查看昨天 develop 分支上的提交

{yesterday

列出所有提交者的提交统计

可以看到每一个提交者分别有多少次提交,以及每次提交的提交信息

$ git shortlog

c8a767d6633cb801aa7fbe2ab1539b78.png

⚡查看引用日志

其记录了最近几个月 HEAD 和分支引用所指向的历史

$ git reflog

1b94b20e91f20591cb192a3a5fe884ee.png

下回分解: 远程仓库 | 分支 | 变基 | 合并

Git 基础学习总结3(学不会你锤我)​zhuanlan.zhihu.com
197d906aa25538e9e989011713fc8207.png
This is End -------------------------
文章若有误人子弟之处,望及时指正,必有重谢!

参考文献:

【1】Jon Loeliger,Matthew McCullough. Git版本控制管理(第2版). 人民邮电出版社

【2】Scott Chacon,Ben Straub. Pro Git. Apress

本文献给头号粉丝 @MMMay 以及 13k 僵尸粉大军........

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值