关于git:git-常用命令对应使用情境

这篇文章结合实际开发情景,讲一些比拟罕用的git命令

查看更残缺的清单:http://www.ruanyifeng.com/blo…
举荐一个cmd工具:更好看的界面,更舒服的用户体验
cmder: https://cmder.net/

前言

首先贴上阮一峰老师博客的一张图,做一个常识储备。

一、分支

首先,拿到一个我的项目地址,老大让你把我的项目拉下来,要执行什么命令呢?
 git clone 我的项目地址
刚拉下来的我的项目,须要切出本人的一个分支进行开发,要执行什么命令呢?
git checkout -b 分支名称
这样切出的只是本人的本地分支,如果须要让他人也能看到你的分支的代码,须要将这个分支推送到近程,要执行什么命令呢?
git push --set-upstream origin 要推送到近程的分支名称
怎么查看以后分支呢?
# 列出所有本地分支 
git branch

# 列出所有近程分支 
git branch -r

# 列出所有本地分支和近程分支 
git branch -a
怎么切换到其余分支呢?
git checkout 分支名称
删除分支
# name是分支名称

#删除本地分支
git branch -d name

#删除近程分支
git push origin --delete name

二、批改并提交

我在一个分支批改了一些代码,怎么查看以后分支的文件批改状态呢?
git status
想具体查看改的内容,怎么操作?
# 显示工作区与暂存区的差别
# 执行后用键盘向下的箭头进行下拉,不要用滚轮
git diff
我又从新批改了一些代码或者文件,这时候我想提交代码到暂存区,怎么做呢?
# 全副提交
git add .

# 提交指定文件
git add 文件门路
上一步提交到暂存区的文件,怎么提交到仓库区呢?
# 写上对应的正文,便于辨别
git commit -m 正文
执行了commit之后,怎么推送到近程?
git push 

三、查看提交日志

有时候须要查看近期本人或其余共事在分支A的批改,怎么操作呢?
# 首先切到A分支
git checkout A
# 显示以后分支的版本历史
git log 

从上图咱们能够看出,git log仅可能查看commit-id、作者、日期以及正文,所以我更举荐大家应用git自带的可视化工具,无需独自装置,应用以下命令行即可关上:

gitk

咱们能够通过这个可视化界面,疾速看到最近的版本信息,包含批改了哪些文件,哪些具体内容

四、合并代码

咱们可能须要将A分支的代码合并到B分支,如何操作呢?
# 首先切到分支B
git checkout B

#执行合并命令
git merge A

#merge之后如果有抵触,手动解决抵触(其实就是看哪些要哪些不要,手动操作取舍),而后执行:
git add .
git commit -m 正文

#如果没有抵触,执行推送到近程
git push
咱们可能须要在A分支去合并B分支的某一次提交,怎么操作呢?

首先咱们须要晓得这一次提交的commit-id,这一次提交是在B分支生成的,所以咱们须要先切到B分支:

git checkout B

能够通过上述的:

git log 
gitk

将commit-id复制进去,复制时能够不必复制全副,复制15位左右就能够齐全定位到对应的id,比方 d22gd6dmlr87sgsn,再切换到分支A

git checkout A

而后执行:

git cherry-pick d22gd6dmlr87sgsn

执行之后查看状态,会提醒你git push,依照提醒执行就推送到近程啦

五、撤销

回退上一个版本或指定版本
# 回退上一个版本
git reset --hard 

#回退指定版本
git reset --hard commit-id

留神,这个命令只是在你本地回退到上一个版本,并不是近程回退。回退之后查看状态提醒git pull能够证实这一点。(依据提醒git pull代码就会从新同步最新的)

刚批改好代码,查看了状态之后(还没有add),我想把以后的批改撤销掉
# 撤销所有批改
git checkout .

#撤销指定文件
git checkout 文件名
add之后提交到暂存区的代码,如何撤销将代码回到工作区?
git reset HEAD

留神:这里如果应用git reset –hard,暂存区的状态就会隐没,回到未修改的状态

在A分支不小心merge了B分支,想撤回这一次merge

执行git reset –hard,再次查看git status,发现还是提醒git push,怎么办呢?
执行以下操作,能够本地代码回到跟近程统一的状态,并且不提醒git push

# 首先同步近程仓库,留神,这一步执行完还是会提醒git push
git fetch --all

# 分支名在这里就是A
git reset --hard origin/分支名

仅撤回历史中的一次commit-id,又不想影响后续曾经commit的版本

在C分支开发,依照工夫做了下列提交:

commit-id-c    2021.03.05
commit-id-b    2021.03.04
commit-id-a    2021.03.03

明天是2021.03.05,如果我想撤销掉 commit-id-a 这一次的提交内容,并且不影响前面的b和c,这要怎么做呢?
咱们先把 commit-id-a 拿到,而后在C分支,执行以下命令:

git revert commit-id-a

而后发现弹出了这样的窗口,不要慌,首先点击键盘”Esc”,这时候多了一条提醒:

而后同时按下”Shift”和”:”

而后按下”q”,再按回车

而后依据提醒git push即可推送到近程

与其说revert命令是一个撤销,不如叫它“还原”,因为这个命令并不会影响第一次提交的版本,只是从新建设了一次提交,提交内容是commit-id内容的还原。这个命令把握当前会常常用到的!

六、其余

临时将未提交的变动移除,稍后再移入

偶然会有这样的情境,我正在开发分支A,可是又给我长期安顿了其余工作比拟紧急,须要去B分支改货色,A分支我又不想提交,这时怎么办呢?

# 将以后未提交的内容长期保留,并加上备注不便查找
git stash save 备注

这时候再执行git status,会提醒:nothing to commit, working tree clean
而后你就能够切到其余分支做别的事件了。
过后你再回到这个分支,执行:

# 查看stash列表
git stash list

怎么复原方才stash save的货色呢?

执行:

git stash apply stash@{0}

其中, “stash@{0}”是依据备注指定到版本,如果省略不写的话,默认取”stash@{0}”,即最新的一次save

同样能够实现的命令行:

git stash pop stash@{0}

stash@{0} 用法同上
这两种命令的区别在于,pop能够了解为“弹出”,执行后会删掉这一次save记录,而apply只是移入变动,记录依然保留。
具体应用哪一个能够依据本人的习惯。

如果感觉stash list记录太多了,想要革除,执行:

git stash clear

如果还有比拟罕用的命令,欢送留言补充,一起提高

【腾讯云】轻量 2核2G4M,首年65元

阿里云限时活动-云数据库 RDS MySQL  1核2G配置 1.88/月 速抢

本文由乐趣区整理发布,转载请注明出处,谢谢。

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据