Git介绍

基本概念

日常使用

修改文件

BUG分支

推送分支

拉取分支

创建与合并分支

解决冲突

撤销修改

版本回退

git标签

什么是标签及标签的作用

标签操作

 

基本概念

我们先来理解下Git 工作区、暂存区和版本库概念

  1. 工作区:就是你在电脑里能看到的目录。
  2. 暂存区:英文叫stage, 或index。一般存放在 ".git"目录下。
  3. 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

通常我们进行的操作步骤一般是

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

实际上执行的过程如下

日常使用

修改文件

提个问题:

如果对一个文件进行如下步骤,那么结果会怎样?

第一次修改 -> git add -> 第二次修改 -> git commit

 

 

你看,我们前面讲了,Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。

BUG分支

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

git stash #可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作

git stash list #查看临时提交的工作现场

git stash pop #恢复工作现场,同时删除stash

git stash apply+git stash drop #恢复工作现场,删除stash

git stash apply stash@{0} #如果有多次提交,则使用选择要恢复的工作现场

git stash clear #清除所有工作现场

推送分支

git push origin master

如果推送的远程分支不存在,则会被新建。如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做git pull

拉取分支

git pull #取回远程主机某个分支的更新,再与本地的指定分支合并。

git fetch #更新git remote 中所有的远程repo所包含分支的最新commit-id,不会自动合并。

创建与合并分支

查看分支:git branch

查看全部分支:git branch -a

创建分支:git branch <name>

切换分支:git checkout <name> 如果带--<name>,这说明是回滚文件

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

解决冲突

git diff <file> # 比较当前文件和暂存区文件差异 git diff --staged # 比较暂存区和版本库差异 git diff --cached # 比较暂存区和版本库差异

git diff HEAD -- file # 比较的是工作区中的文件与版本库中文件的差异

撤销修改

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout --file

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,

第一步用命令git reset HEAD <file>,就回到了场景1

第二步按场景1操作。

指令解释:

git checkout file适用于两种情况:

一种是将自修改后还没有被放到暂存区,撤销修改就回到和版本库(HEAD)一模一样的状态;

一种是已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

git reset HEAD <file>

适用于已将文件添加至暂存区,还未进行commit操作时,可以把暂存区的修改撤销掉

版本回退

场景:已经提交了不合适的修改到版本库时,想要撤销本次提交。

操作指令:

  1. git log和git log --pretty=oneline #查看git提交的日志
  2. git reset --hard HEAD^或git reset --hard HEAD~1或git reset --hard commitId #版本回退指令,HEAD表示当前版本,^表示上一个版本,^^表示上上一个版本,依次类推,或者HEAD~1表示上一个版本 HEAD~2表示上上一个版本,依次类推
  3. git push -f #强制推送覆盖远程分支

执行如上指令后,远程分支将会被还原到制定的commitId上。需注意:如果该分支也有其他成员参与开发,并且其他成员本地代码分支上有此前你需要撤销的commitId,则其他成员提交代码时,会将你已经在远程代码分支上撤销完成的代码重新提交上去,造成最终代码撤销失败,如果要避免此问题,可以尝试git  revert指令

git  revert  #同样也是版本回退,但与git reset的区别是它每操作一次会重新提交一个commitId,这样就避免了多人开发同一分支时引起的覆盖问题

git revert --abort  #终止此次revert操作

其他指令:

git reset --mixed  #还原 HEAD、Index # 默认参数

git reset --soft  #还原 HEAD

git reset  --hard  #还原 HEAD、Index、Working Directory

git标签

什么是标签及标签的作用

发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。

标签操作

git tag:查看标签

git show <tagname>:查看标签信息

git tag <tagname>:用于新建一个标签,默认为HEAD,也可以指定一个commit id;

git tag <tagname> <commitID>:指定一个commit id新建标签;

git tag -a <tagname> -m "blablabla...":可以指定标签信息;

git push origin <tagname>:可以推送一个本地标签;

git push origin --tags:可以推送全部未推送过的本地标签;

git tag -d <tagname>:可以删除一个本地标签;

git push origin :refs/tags/<tagname>:可以删除一个远程标签。

 

解决IDEA LF和CRLF转换error设置

git config --global core.autocrlf input    
#拒绝提交包含混合换行符的文件
git config --global core.safecrlf true

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前台: (1)注册登录模块:按照学校的相关规定进行注册和登录。 (2)招聘信息查看:高校毕业生们可以网站首页上查看所有的招聘信息,除此之外还可以输入公司名称或岗位名称进行搜索。 (3)用人单位模块:此模块为宣传用人单位的主要功能模块,具体包括用人单位简介、岗位需求及职责及公司介绍等功能。 (4)就业指导:学生朋友们在就业前可以通过此模块获取指导。 (5)新闻信息:为了让用户们可以了解到最新的新闻动态,本系统可以通过新闻信息查看功能阅读近期的新闻动态。 (6)在线论坛:毕业季的同学们可以通过此模块相互交流。 后台: (1)系统用户管理模块:可以查看系统内的管理员信息并进行维护。 (2)学生管理模块:通过此功能可以添加学生用户,还可以对学生信息进行修改和删除。 (3)用人单位管理模块:管理员用户通过此模块可以管理用人单位的信息,还可以对用人单位信息进行查看和维护。 (4)招聘管理模块:管理员通过此功能发布和维护系统内的照片信息。 (5)就业指导管理模块:通过此模块可以编辑和发布就业指导信息,从而更好的帮助就业季的同学们。 (6)论坛管理:通过论坛管理可以查看论坛中的主题帖及里面的回复信息,除此之外还可以对论坛中的信息进行维护和管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值