menu LittleJake's Blog
color_lens
avatar
Jake Liu
Never Settle
creative commons by-nc-sa
hit
Category
keyboard_arrow_down

© 2024 LittleJake's Blog.

萌ICP备20223020号

系统性学习Git

Git

简介

Version Control System 版本控制系统

Git Cheat Sheets

特点

  • Track history copies 保留历史记录、文件(类似snapshot-快照,也可理解为增量备份?)
  • Client/Server 既可作为服务器也可作为客户端

无版本控制时的原始操作

diff [file1] [file2] > [diff_file] #生产diff文件,包括文件的所有改动
patch [file] < [diff_file] #通过diff文件,对原始文件进行修改、打补丁

Git Workflow

graph LR; A[Directory]--git init-->B[Working tree] B[Working tree]--git add-->C[Staging area] C[Staging area]--git commit-->D[Git directory] B[Working tree]--git commit -a-->D[Git directory]

常用操作

You don't need to remember all until you use it.

git config #修改git配置
git init #初始化git文件夹
git add [file] #从untracked、unstaged (working tree)添加文件至staging area
git commit #改动说明,将staging area文件添加至git directory
git log #查看过去的commits

git commit

  • 第一行简要写出改动
  • 之后可用段落写出相应详细改动
  • git commit -a:跳过git add(只针对staging area,不包括untracked的新文件)
  • git commit -m:单行注释,用于小改动

Commit message规范

  1. Linux kernel documentation
  2. Commit Message Style Guide For Git
  3. 5 Useful Tips For A Better Commit Message

git log

  • git log -p:显示patch,同diff -u

Rollback

git revert

  • revert为重做版本1的行为,并commit为版本4
graph LR; A[版本1]-->B[版本2] B[版本2]-->C[版本3] C[版本3]--git revert-->D[版本4] C[版本3]--git revert---A[版本1]

git reset

  • reset为抛弃版本1后的所有版本,回退为版本1
graph LR; A[版本1]-->B[版本2] B[版本2]-->C[版本3] C[版本3]-->D[版本4] D[版本4]--git reset-->A[版本1]

Merge & Rebase

master在branch1创建后有更新的情况时

graph LR; A[版本1]-->B[版本2] B[版本2]--master-->C[版本3] B[版本2]--branch1-->D[版本3]

Merge

使用merge时,进行three-way-merge
branch1的版本3的祖先为master版本2

graph LR; A[版本1]-->B[版本2] B[版本2]-->C[版本3] C[版本3]--master-->E[Merge Commit] B[版本2]--branch1-->D[版本3] D[版本3]--branch1-->E[Merge Commit]

Rebase

使用rebase时,进行fast-forwarding
将原本branch1版本3的祖先,从master的版本2,变为master的版本3(即在branch1版本3执行了master版本3的commit),branch1版本3的commitID会改变

graph LR; A[版本1]-->B[版本2] B[版本2]--master-->C[版本3] B[版本2]--原branch1的ancestor-->D[版本3] C[版本3]--新branch1的ancestor-->D[版本3]

pull request

Buy me a beer

buymeacoffee
Jake Liu
Never Settle

Title: 系统性学习Git

Author: Jake Liu

Origin:

Creative Commons License

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) For any re-post you must give appropriate credit.

文章遵循CC许可 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 转载请注明出处

Tag:Git, VCS, Version Control System

评论区

Add a new comment.

Theme