学习笔记——Git

Git简介

git是分布式版本控制系统。

集中式版本控制就是所有版本集中在一个仓库中心A,其他人B,C从A中拿出版本但只能拿到一个版本。

分布式版本控制就是版本v1 v2 v3不仅在A,在B,C都有。就算A挂了也没事,B,C有,可以把版本推到A。如果A写完了一个版本v4,它先保存在自己本地,然后再同步推到A。

 

为什么要做版本控制?

在开发过程中,随公司业务量增大,功能越来越多。

防止线上代码出问题,可以做回滚。

 

版本控制——git管理文件夹

①进入要管理的文件夹

②初始化git initgit status检测当前文件夹下面的文件状态

③管文件和文件夹git add xxxx,(再执行git status,绿色的就是管理了的,红色的未管理的)【git add . 将当前所有未管理的都管理起来】

④个人信息配置:用户名和邮箱:

git config --global user.email "you@example.com"

git config --global user.name "Your Name"

⑤生成版本 git commit -m 'v1' 生成v1版本

当有人对管理的文件做修改后,git可以检测到,git status会变红且显示Modified。

需要再生成一个版本:git add . 。git commit -m 'v2'

想要查看这两个版本的记录可以用:git log

 

git三大区域

工作区:就是写代码时正在操作的文件,有两个状态:已管理和新增/修改(红色)。只要执行git init后,git就会自动检测。

想把工作区中新增或修改的文件提交到暂存区,用add命令。

想进行回滚git checkout -- 文件名,就变回已管理状态。

暂存区:像个缓存区域,临时保存你的改动。提交到暂存区后颜色会变绿色。如果不要它可以进行回滚,或者想生成一个版本可以再往后提交。

把暂存区文件生成版本提交到版本库,用commit命令。

想回滚到未暂存的状态:git reset HEAD 文件名

版本库(head,指向最后一次提交的结果):

如果最新版本v3功能有问题,想回滚到上一个版本v2可以用git reset --hard 版本号(在git log中)

如果又没问题,想回滚到之前写的最新版本v3,可以用git reflog,然后git rest --hard 版本号

 

分支

第一个版本C1是最初版本,在第二个版本C2里只保留新增的发生变化的代码。C2没修改的部分通过指针形式指向C1。

可以建2个分支,C3指向C2,C4也指向C2。就可以把功能分开完成,最后再合并到C5就行。【当需要紧急修复线上Bug,就可以创建一个新的分支进行修复,修复完后再合并到主分支中】

git branch:可以查看目前分支有哪些

git branch xxx:创建分支xxx

git checkout xxx:切换到xxx分支

git merge xxx:(先进入到某分支)把xxx分支合并过来

git branch -d xxx:把xxx分支删去

当分支合并出现冲突,就需要你修改这些文件来手动合并这些冲突(conflicts)。改完之后,你需要执行如下命令以将它们标记为合并成功:
git add <filename>

 

github

1.new respository创建一个新仓库

2.创建完后https/ssh 是代码要推送的地址,也就是远程仓库的地址

如果是个空文件夹:

git init

git add README.md

git commit -m 'xxx'

git remote add origin https://github.com/xxx/xxxx.xxx:将远程仓库地址取个别名orgin

git push origin master:把本地分支推送到远程仓库

如果不是空文件夹:

git remote add origin https://github.com/xxx/xxxx.xxx:将远程仓库地址取个别名orgin

git push origin master:把本地分支推送到远程仓库

 

 

如果想把代码拉下来:git clone https://xxxxxxxx【克隆时候,把所有分支也都克隆下来,且内部已经实现git remote add origin 远程仓库】

想要把最新的代码拉下来:git pull origin dev【就是本地有代码,但不是最新的时候用它】

 

git pull orgin dev相当于git fetch origin dev 和git merge origin/dev

 

如果想邀请别人一起参与项目:

settings-> Collaborators  -> 被邀请的人会受到邮件

 

rebase

能帮你把多个提交记录整合成一个提交记录。

git rebase -i 版本号【希望最新记录到版本号的这几个记录合并成一个】

git rebase -i HEAD~3【从当前开始找最近的3条记录进行合并】

注意:要合并的是那些没有提交到远程仓库的,如果已经提交了的最好不要合并。

 

 

鄙人实习中遇到的指令

1.git stash

因为我电脑是windows环境,所以有一个配置必须修改一下,所以一直有一个modify,想跳过它操作后面的就可以执行git stash,相当于把修改存在一个栈里,执行完后,就相当于清空你那些提示,然后就可以git pull --xxx或者git checkout xxx。执行完这些操作后,再git stash pop。相当于把你的修改再拿回来

git stash list可以在这里查看你git stash的修改

git stash clear每次用完以后,记得清空这个stash要不然每次pop进来的有以前的就会很混乱

 

2.git log查看记录,然后找到对应记录的版本号

git show 版本号。就可以查看对应的diff,找到修改的目录

 

(在这之前先git add .)

3.提交:git commit -m "feat(对应分支):  描述"

如果不小心commit信息写错了,可以用git commit --amend来进行修改

 

4.git rebase xxx -i :( xxx是你要合到的分支  )把你的多个commit合并成一个commit。

然后就会出现你提交的一堆commit,在你要保留的commit最左边用vim改成p,其他不保留的改成f,这样就会将其他f的合并到p上。就成一个commit了

想要终止rebase:git rebase --abort

合成一个以后,进行git push 操作,推到远端

 

5.在commit之前或者等等情况,需要拉取最新的代码:git pull  --rebase【相当于git fetch+git rebase xxx】

git pull = git fetch + git merge FETCH_HEAD 

git pull --rebase =  git fetch + git rebase FETCH_HEAD 

 

6.在合了一个分支1以后,想再合并一个分支2,需要更新你合并到的那个分支develop,然后切换到分支2.

git checkout develop

git pull --rebase

git checkout 分支2

然后

git rebase develop

就会有冲突,自己解决完冲突以后

git rebase --continue

git push origin xxx -f

然后再合并

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值