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

52次阅读

共计 2805 个字符,预计需要花费 8 分钟才能阅读完成。

这篇文章结合实际开发情景,讲一些比拟罕用的 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

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

正文完
 0