引言
在进入字节实习之后,发现很多很基础的东西都没搞懂。准备五月中旬或者五月底去上班,现在开始准备这些东西,希望进入公司能快速上手业务。
- Git学习之旅:最基础的东西就是Git,学会Git起码你不会污染你队友的代码!
- Go:新部门用的是Go,我将从Go基础—>Go高级—>Go项目来学习!
- Sql:作为后端的开发人员,少不了写Sql!
- redis:之前我没有用过redis,现在开始学着用!
- 设计模式与代码简洁
Git常用命令
git init:初始化仓库的命令,通过这个命令才能生成一个git的仓库
git commit:将暂存区的文件(被add的文件)放入本地仓库
- git commit -m:本次提交的时候携带一定的参数
- git commit -a:把所有暂存区的文件加入到本地仓库
- git commit -am:一般都是这两个命令一起用
- git commit --amend:
- 当上一次的修改发生错误,在git log中又不想让人看出来,可以通过这个命令。在本次提交的log将覆盖上一次的log
git add:将修改的文件(临时更改)放入暂存区
- git add --all:将所有改动放入暂存区
git branch:创建/查看分支
- git branch -a:查看所有分支
- git branch branchName:创建分支
- git branch -f branchName versionName:强制制定某一个分支指向对应的版本
git checkout:切换分支
HEAD可以理解为一个指针,所有的操作都是针对这个指针指向的记录,在这个记录上进行改动。
- git checkout branchName:切换分支
- git checkout -b branchName:切换分支,如果分支不存在,就创建对应的分支
- git checkout hashCode:可以让HEAD只想某一个具体的记录
git clone:克隆远程仓库
- git clone git@github.com:usrname/repository.git
git status:查看本地文件的状态
- 红色的文件,没有被add到暂存区的文件
- 绿色文件,被add到暂存区的文件
- 没有文件,说明当前文件全部全部处于资源库
git merge:合并分支
- git merge branchName:将其他分支合并到当前分支上
git reabse:合并分支
- git reabse branchName:将当前工作放置到branchName上
rebase和merge的区别在于,rebase能保持开发的线性历史,很清晰
git reset:回退操作1
使用git reset可以将当前的HEAD指针定位到你需要的git log上。
在这个例子中,当前的版本原本处于C2,但是想放弃C2这个版本。
- git reset HEAD^:定位到C1,表明C1之后的版本更改全部废弃。但是这些更改还存在于电脑中,只是未放入暂存区。(相当于变成没有add的文件)
- git restore xxx.xxx,把暂存区的文件全部放弃。这样就完成了一次本地回退
- 本地回退会将版本降低。如果这个版本你上传到远程分支,现在想回退是没办法做到的。因为在回退版本的时候,推送到远程分支,会因为版本太低而被拒绝。
-
git revert:回退操作2
与git reset不同,git revert是重新创建一个新的版本,这个版本将之前版本的操作全部回退,并且将这些回退操作作为一个新的操作形成一个领先版本。
如图,C2`的内容和C1是相同

- git revert 版本号。想撤销哪个版本,就写对应的版本号
git restore:回退操作3
- git resotre fileName:将未放入暂存区的文件改动撤销
- git resotre --staged:将放入暂存区的文件恢复提出来,变成红名状态
git cherry-pick:操作版本的命令
事实上git cherry-pick 一直与 git rebase -i一起来学
在对应的版本上使用
- git cherry-pick hashCode。就能把对应版本的更改放到改版本上
git fetch:更新本地仓库
一般都会使用git pull
git pull = git fetch + git merge
git push
推送数据到远程仓库
git push --set-upstream origin dev 一般类似这样的命令都是说明,远程仓库没有设置对应的分支
git pull
git pull更新当前所有的分支
git pull == git fetch + git merge
git pull --rebase == git fetch + git rebase
Windos连接Github
- 第一步:下载git并且安装
https://git-scm.com/download/win
除了路径其他直接一步到位即可 - 第二步:设置一个github的账号
- 第三步:配置自己的账户和邮箱
git config --global user.name "70pice" git config --global user.email "381378600@qq.com"
- 第四步:生成SSH Key并且配置到自己的账户中
Git merge 和 Git rebase
git merge和git rebase都用于和并代码。
git merge能清晰地展示父节点,而git reabse可以线性的展示开发历程。在团队开发的时候,用哪个命令就是见仁见智的了!
Git merge
- 基于master创建了create branch1/2/3分支
- 基于create branch 1创建了create branch4分支
- 分别合并到create branch2中
可以看出整个过程非常的清洗,每一个节点(commit log)的父节点都清晰明了,但是显得整体的开发分支比较散乱
Git rebase
git rebase的中文名为变基
请使用git rebase的时候严格遵守
- git rebase master(other_branch)
- git rebase other_branch (master)
使用rebase是想要保证一条独立清爽的开发线,一般而言都是在dev分支上开发,合并到master上,如果有其他同事已经在master上进行开发并且完成了commit操作,原本的基地就被改变了,首先git rebase master能让同事的操作变成你的基地,这样你再合并的时候相当于是基于新master节点创建分支进行开发的。这样就有干净清爽的开发分支了。
假设此时
有两条分支 master dev
master 已经被其他开发者commit了两次
dev 由你独立开发commit了两次
在进行rebase的时候,要处理最多两次的冲突(假设有冲突的话)
Git 回退
- git revert:用于远程仓库的回退,如果当前版本发现问题,并且已经被push到远程仓库上了,这时本地再使用git reset回退,回退之后再重新push会出现版本落后不允许被push的提示。
如下图所示,我在本地reset了一个版本



- git reset:用于本地仓库的回退
注意,gir reset version1,代表version1之后的版本更改全部被舍弃