Git学习总结

  • 基础概念
  • 基础指令
  • 回退撤销
  • 目前vmsone的分支策略
  • 更新密码
  • rebase
  • git log
    • 呈现形式
    • pretty-format
    • 筛选条件

基础概念

工作区working directort:一个git代码库编中的文件辑过后,任何git指令都没有输入时,所有的改变都存放于工作区
版本库-暂存区stage:当使用add指令后,工作区的修改就进入到暂存区了
版本库-分支:确定要生效的代码可以通过commit指令添加到各个指定的分支中,变更的代码就真正进入了代码库中,可以push到其他主机,或被pull或clone到其他主机了。
HEAD指针:指向了当前分支的最新一笔commit,HEAD^表示第二笔
commit:即是一个动作“提交”,也是一个名词“提交记录”

基础指令

git clone

git pull [--set-upstream origin ] 从远程仓库拉取分支,--set-upstream参数拉取指定的远程分支

git push 把代码推到远程仓库

git add 把代码添加到暂存区

git commit 把代码提交到代码库

git rebase 重整代码分支,合并两个分支时,用rebase而不是merge则可以减少一个commit记录,使git记录变得更清晰明确。也可以使用rebase合并、摘取、放弃某些commit。

git merge 合并分支时使用,会在git log中增加一个commit记录

git status 查看代码库的状态,多少文件被修改:多少在工作区、多少在暂存区

git log 查看commit记录

回退撤销

从工作区清空修改记录,回到上一笔add/commit之后干净的工作区:git checkout .或git checkout --

从暂存区回到工作区:git reset HEAD

从暂存区直接舍弃,不回到工作区:git reset --hard HEAD ,hard参数就是控制修改是否保留到工作区的,默认是--soft就是把修改保留到工作区,不丢弃,--hard则会丢弃修改

回退分支:git log查看,找到目标分支,粘贴commit的hash号,git reset [commit_hash]。同上如果想把这个commit之后的修改保留到工作区,则不加参数,如果不想要了,则加--hard参数

删除中间的commit:用rebase,git log先找到要删的commit的上一个commit的hash,然后git rebase -i [上一个commit hash],然后pick要保留的,drop要放弃的

目前vmsone的分支策略

分支:正式环境master,预发环境dev,其他人各自一个分支,或每个功能一个具体的feature分支。
合并:
- 先都从dev pull代码,然后在各自的本地checkout -b出新的分支,如git checkout -b feature1.
- 然后在feature1上开发,开发结束后,git add .git commit -s添加签名编辑memo,
- 之后切回dev分支,git pull --rebase拉取最新的dev代码,
- 再切回feature1分支,git rebase dev合并dev最新的代码到feature1分支,然后push,
- push成功后在coding上提MergeRequest请求合并到dev,触发代码评审,评审通过后合并到dev。master分支通过bamboo正式环境发布的流水线自动合并dev的代码

更新密码

git config –global credential.helper osxkeychain
之后push
然后就会让重新输入用户名和密码

rebase

git rebase -i [不进行处理的,要保留的最后一个commit的hash]

然后进入vim的编辑页面,列举了之后的所有commit

pick commit_hash1 commit_comment1

pick commit_hash2 commit_comment2

如果要删掉其中的部分commit,则直接把pick换成drop

pick commit_hash1 commit_comment1

drop commit_hash2 commit_comment2

如果要合并其中的一些commit,则保留一个pick,把其他pick换成squash

pick commit_hash1 commit_comment1

squash commit_hash2 commit_comment2

squash commit_hash3 commit_comment3

放弃本次rebase

git rebase --abort

出现冲突,冲突地方被标注在文件中了
1. 解决冲突
2. rebase ontinue:

git add .

git rebase --continue

git log

查看本周我的提交git log --pretty=format:"%h - %an, %ar : %s" --author='jiawanhua' --since="2020-11-23"

呈现形式

参数

含义

-p/--patch 按补丁格式显示每个提交引入的差异。
--stat 显示每次提交的文件修改统计信息。
--shortstat 只显示 –stat 中最后的行数修改添加移除统计。
--name-only 仅在提交信息后显示已修改的文件清单。
--name-status 显示新增、修改、删除的文件清单。
--abbrev-commit 仅显示 SHA-1 校验和所有 40 个字符中的前几个字符。
--relative-date 使用较短的相对时间而不是完整格式显示日期(比如“2 weeks ago”)。
--graph 在日志旁以 ASCII 图形显示分支与合并历史。
--pretty 使用其他格式显示历史提交信息。可用的选项包括 onelineshortfullfuller 和 format(用来定义自己的格式)。
--oneline --pretty=oneline --abbrev-commit 合用的简写。

pretty-format

--pretty=format指定了log以单行的形式展示,每行中按照format的格式来展示

选项

说明

选项

说明

%H 提交的完整哈希值
%h 提交的简写哈希值
%T 树的完整哈希值
%t 树的简写哈希值
%P 父提交的完整哈希值
%p 父提交的简写哈希值
%an 作者名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用 –date=选项 来定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期(距今多长时间)
%s 提交说明

筛选条件

选项

说明

- 仅显示最近的 n 条提交。
--since--after 仅显示指定时间之后的提交。
--until--before 仅显示指定时间之前的提交。
--author 仅显示作者匹配指定字符串的提交。
--committer 仅显示提交者匹配指定字符串的提交。
--grep 仅显示提交说明中包含指定字符串的提交。
-S 仅显示添加或删除内容匹配指定字符串的提交。

你可能感兴趣的:(东哥内部总结,git,学习,github)