Git项目文件/版本管理

首先我们先统一一个概念,便于我们在后面的表述。
我们Git版本管理有三个区:工作区、暂存区、版本区(库)

接下来我们会介绍对文件和项目的操作,其实就是增删改查(CRUD)。因为之前已经分享过分支和标签的操作,所以,针对分支和标签的CRUD操作可以查看之前的文章。

Git分支操作集合
Git标签管理集合

各个区文件的对比

1.工作区和暂存区的比较:git diff
2.暂存区和版本区的比较:git diff --cached 或者(–staged)
3.工作区和版本区的比较:git diff master
4.查看当前工作区所有文件的状态:git status

增加(Create)

1.将工作区指定文件添加到暂存区:git add [fileName]
也可以将工作区所有改动的文件添加到暂存区: git add .
2.将暂存区文件提交到版本区:git commit -m “本次提交说明”
3.可以将上面两个步骤合并成一个:git commit -a -m “本次提交说明”

撤销

1.撤销暂存区修改:git reset HEAD [fileName]
2.撤销文件的修改,就是将文件恢复到刚clone的样子,也就是放弃你目前的所有修改:git checkout – [fileName]
3.撤销版本区的提交,将本次提交和上次提交合并成一次提交:git commit -m “本次提交说明” --amend
4.撤销前一次提交,并保留记录:git revert HEAD

删除(Delete)

1.工作区A文件已删除,暂存区有A文件,现要删除暂存区A文件:git rm A
2.工作区A文件未删除,暂存区有A文件,现要删除本地和暂存区A文件:git rm -f A
3.工作区A文件未删除,暂存区有A文件,现要只删除暂存区文件:git rm --cached A
4.你会纳闷,如果A文件不在暂存区该怎么删除,告诉你直接DELETE键删除,嘿嘿

恢复

方式一:git reset

1.查看提交记录,查看提交说明和commit_id,这个id代表了某次唯一的提交信息,这在后面操作中都将用到:git log
2.将某文件恢复到某个提交版本:git checkout commit_id [fileName]
3.将工作区文件恢复到某个提交版本 :git reset --hard commit_id
4.将工作区文件恢复到上一个提交版本(指针移动一次):git reset --hard HEAD^
5.将工作区文件恢复到上上个提交版本(指针移动两次):git reset --hard HEAD^^ (以此类推)
6.将工作区文件恢复到上N个提交版本(指针移动N次):git reset --hard HEAD~N (N直接指定数字)
7.版本回退了,看到了之前的代码,现在想回到最新的版本怎么办?
git log不会显示回退版本之后的提交记录,当然你也可以在一开始的时候将最新的commit_id记录下来
查看所有的提交记录:git reflog
找到你需要切换的版本ID执行:git reset --hard commit_id

方式二:git revert

git reset 将某次提交后的版本全部抹除;变动如下

O ------> O ------> O O ------> O
^ ^ ^ --[git reset HEAD^]–> ^ ^
版本 A 版本 B 版本 C [HEAD] 版本 A 版本 B [HEAD]

版本 C 造成的更改直接被抹除了,无法在提交记录上看出。

通常,在与他人协作开发时,将已经提交到远端的更改 reset 回去不是一个好主意。如果执意要这么做,那么 push 时应该加上 -f 选项用本地内容强制覆写远端。

git revert 创建一次新的提交,将某次提交的更改撤销;变动如下

O ------> O ------> O O ------> O ------> O -------> O
^ ^ ^ --[git revert HEAD]–> ^ ^ ^ ^
版本 A 版本 B 版本 C [HEAD] 版本 A 版本 B 版本 C 版本 D [HEAD]

其中,版本 D 撤销了版本 C 的更改;它与版本 B 的内容是相同的。

该方式适用于已经存在错误的提交,需要把错误的提交从主干分支删除

git revert bd1b80cb 0f2f7e4a 删除指定的这两次提交

使用 git revert 可以撤销指定的提交, 要撤销一串提交可以用 … 语法。 注意这是一个前开后闭区间,即不包括 commit1,但包括 commit2。

git revert --no-commit f7742cd..551c408
git commit -a -m 'This reverts commit 7e345c9 and 551c408'

临时操作

1.有时候我们会需要临时切换分支操作,我们需要将当前工作区的文件临时暂存起来:git stash
2.别的分支处理好了问题,再回到当前分支,把临时暂存的文件取消暂存:git stash pop

EDN.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值