每次吃一点Android_Gitの一

目录:
1、Git工作区、暂存区、分支的区别
2、Git版本回退和撤销修改
3、Git删除文件
4、vim说明
5、总结

每次吃一点Android_Gitの一_第1张图片
进击的小仙

穿越:【目录】每次吃一点Android_Git版本管理

参考资料:Git教程 - 廖雪峰的官方网站

1. Git工作区、暂存区、分支的区别

每次吃一点Android_Gitの一_第2张图片
1488360764(1).png

在 每天吃一点Androidの二中,我们在电脑上创建了一个名为Git_Repo的文件夹,并在里面启动bash,通过 git init初始化了一个空的版本库,git自动生成了一个隐藏的.git文件夹。

  • .git文件夹就是版本库,里面存放了很多的东西。
  • Git_Repo就是工作区,我们在里面新建工程,或者新增文件,如readme.md;
  • 然后我们在bash中add添加后,工程或文件就被加入到了.git版本库中的stage暂存区;
  • 继而再commit提交后,工程或者文件就被提交到了master分支

2. Git版本回退和撤销修改

2.1. 版本回退

查看版本日志:

git log

查看简化的版本日志:

git log --pretty=oneline

每次吃一点Android_Gitの一_第3张图片
Paste_Image.png

如上图,黄色一长串“bbcd...b070”是commit id,也就是版本号,使用SHA1计算出来的id,这个id在版本回退中扮演很重要的角色。后面的白色字符串,如"rm readme2.md"是版本修改说明。
回退到上个版本:

git reset --hard HEAD^

回退到上上个版本:

git reset --hard HEAD^^

回退到十个版本:

git reset --hard HEAD~10

回退到指定版本号的版本:如版本号开头部分为bbcd...

git reset --hard HEAD bbcd

另一个版本日志的查看方式:

git reflog
每次吃一点Android_Gitの一_第4张图片
Paste_Image.png

2.2. 撤销修改

  • 撤销工作区的修改:
git checkout -- file

如果暂存区有内容,那么工作区撤销成与暂存区一样。
如果暂存区没有内容,那么工作区撤销成与分支一样。

  • 撤销暂存区的修改
git reset HEAD file

撤销后,暂存区的内容与分支一样

注意:修改工作区的readme.md,add添加工作区内容到暂存区,但未commit提交,再次修改工作区的readme.md内容,不add添加到暂存区,也就是说现在工作区、暂存区、分支三个位置的readme.md都不同,此时commit提交,提交的内容是暂存区的,而工作区第二次修改的readme.md是没有提交上去的。

3. Git删除文件

删除工作区的文件:

rm readme2.md

分两步:一:git rm删除,二:git commit提交

git rm readme2.md
git commit

撤销删除:

git checkout --readme2.md

查看文件内容:

cat filename

4. vim说明

vim分为编辑模式和命令模式两种。

  • 命令行模式下的命令:
    dd:删除行
    iao:进入编辑模式
    数字n+d:删除当前行开始n行
    u:回退
    pd删除后,可以用p粘贴

  • 进入命令模式:esc

5. 总结

区别好工作区、暂存区和分支

  • 情景1:添加并且提交了一个改错了的文件到分支,要回退到某个历史版本。
#查询分支的各个历史提交的版本,根据版本描述确定要撤回到的版本
git log --pretty=oneline 
#或者用这个指令,HEAD前面的一串就是版本号
git log reflog
#根据版本号输入版本回退指令,版本号可以不用写完整
git reset --hard HEAD 版本号
  • 情景2:添加了一个改错了的文件到暂存区,但还没有提交到分支
# 将暂存区的文件替换成分支里的文件
git reset HEAD file
  • 情景3:修改错了工作区的文件,要取消修改
git checkout -- filename
  • 情景4:删除分支的文件
git rm filename
git commit

你可能感兴趣的:(每次吃一点Android_Gitの一)