投稿    登录
  博主录制的Python3爬虫视频教程已发布!详情请戳Python3爬虫视频教程!希望大家支持!非常感谢!

Git常用命令总结

Other 崔庆才 3104浏览 0评论

1.初始化本地仓库

2.添加文件到本地仓库暂存区

3.添加文件到本地仓库

此命令代表确认提交到本地仓库。-m ‘v1’代表为此添加一个版本标记v1

4.查看当前git的状态

结果A:

证明当前有文件已经修改,但是没有准备提交的修改,没有add和commit

结果B:

证明当前已经有文件提交了,但是还没有commit

结果C:

证明当前所有文件已经提交到本地仓库,工作目录是干净的

5.查看git日志

结果:

证明当前我们已经commit了两次,上面的为最近提交的。

如果嫌输出太多可以尝试下面的命令,一行显示

结果如下:

一大串类似的

是commit id(版本号),和SVN不一样,Git的 commit id 不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示,而且你看到的commit id和我的肯定不一样,以你自己的为准。为什么commit id需要用这么一大串数字表示呢?因为Git是分布式的版本控制系统,后面我们还要研究多人在同一个版本库里工作,如果大家都用1,2,3……作为版本号,那肯定就冲突了。

6.版本回退

回退到上一版本:

回退到上上个版本:

如果回退的版本过多则不用加那么多的^号

比如回退到上10版本,则可以用下面的命令

回退1个版本相当于

不过现在利用git status来查看已经看不到刚才那个版本了,想要返回的话怎么办

可以仍然用上面的方法

只要写前几位就好了,git会自动去匹配的。当然前提是你的命令行窗口没有关闭还能找到之前的commit id。

不过万一你的命令行关闭了也没关系,git提供了一个方法来记录你的每一次命令。

结果:

在前方仍然显示了版本号,你仍然可以找到。仍然可以利用的reset命令来还原。

注意:

A 工作区和暂存区的名词区别

工作区:就是你在电脑里能看到的目录

暂存区:在.git文件夹下存在一个暂存区stage和好多个分支比如master

当执行git add命令时,工作区的内容便会到stage暂存区中,当执行git commit命令时暂存区的内容便会提交到分支里面。

B “Git管理的是修改”的意思

比如第一次修改readme.txt,然后执行git add到暂存区,然后再修改readme.txt,然后执行git commit 到分支。

结果调用 git status 时发现现在仍然有一个modified文件,这是因为我们没有把新修改的文件提交到暂存区,所以导致分支中的文件和在工作区的原文不匹配。所以我们需要重新add和commit。这说明git管理的是”修改”,而不是”文件”本身。

7.撤销修改

比如 git checkout — readme.txt 它的作用如下:

把 readme.txt 文件在工作区的修改全部撤销,这里有两种情况:

一种是 readme.txt 自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

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

总之,就是让这个文件回到最近一次 git commit 或 git add 时的状态。

那么上面的这个情况是我们提交或者没提交到暂存区之后又对源文件做的修改。

还有另一种情况,我们提交之后放到了暂存区,我们想把暂存区里面的文件撤销回来。

就用以下命令:

就是将刚才的git add命令撤销,把暂存区中的内容撤销回到工作区。

当然,如果你不但add了,并且又commit了,那就只能进行版本回退了。在上面已经说过了。

总结:

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

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,进行版本回退,不过前提是没有推送到远程库。

8.删除文件

假如现在你新建了一个 hello.txt 文件,你已经add并commit到了本地分支之中。

现在你想删除,如果直接执行

则是只把工作区中的文件删除了,本地分支中没有删除,现在你执行git status 则会提示当前工作区已删除了一个文件,本地分支仍然存在,就存在了工作区和本地分支不同步的问题,现在我们如果想恢复一下,就利用下面的命令

将本地的文件一键还原。

假如我们真的是想将本地分支中的一个文件删除,那么我们就执行下面的方法。

执行了这个命令之后,我们执行 git status 之后就会提示 你现在需要commit一下确认删除。

并且执行完这个命令之后,我们执行 ls 命令之后发现本地的文件也已经不存在了。

如果有很多个文件在本地被删除掉了,暂存区和工作区的文件完全不一样了,工作区删除掉了很多个文件,就会出现

如果一个个地删除文件肯定特别麻烦,所以我们可以用下面的命令来

它等同于

git add . 和 git add -u

git add -A 和 git add -u 会把我们未通过 git rm 删除的文件全部stage 使用过以后运行 git status 便会出现 changes to be committed … 说明已经都经过git rm 删除了. 综上,我们想删除分支中的文件时就需要两条命令合起来使用

要小心的是,执行 git rm 方法之后工作区和本地分支中的文件已经都不存在了。所以如果你已经在远程仓库存在备份的话,你就不用担心误删了。否则你就要小心了,会丢失这个文件的。 对比修改的文件

结果:

-号开头的语句代表这句话删除掉了 +号开头的语句代表这句话为新增语句 9.分支 新建本地分支

切换到dev分支

创建并切换到该分支

查看本地分支

比如此命令会输出 * master hello 代表当前已经选中了master分支,存在本地两个分支master和hello 合并分支

这样我们就把 master 分支合并到了hello分支了。 接下来我们就可以删除本地分支了。 既然分支合并这么简单,它可不可能出现什么问题呢?当然有,当然会出现分支合并冲突的问题。 比如我切换到了hello分支并修改了一个文件 add并且commit,然后我切换回了master分支 同样修改了这个文件,add并且commit。现在我们如果执行git merge hello 则会报一个提示说 分支合并冲突。 我们查看刚才修改的文件发现已经发生了变化,我们需要手动修改完了之后,然后继续add和commit才可以。如果没有add和commit,那么我们无法切换回原来的分支的。 add和commit之后,原来的hello分支仍然保持了原来不变,只不过是我们的master分支改变了。下面示意图则清楚地表示出了如下关系,图中的feature1相当于hello分支。 合并之后,我们就可以进行删除分支了,可以删除掉hello分支。 0 其实上面的一系列操作 从merge到修改 然后add 然后commit 其实可以利用一条命令来修改,这个方法叫禁用Fast Forward模式 刚才的一系列命令如下

那么利用下面的语句同样可以达成同样的效果

因为本次合并要创建一个新的commit,所以加上 -m 参数,把commit描述写进去。 Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。 结束之后我们照样可以删除hello分支。 删除本地分支

查看远程分支

查看本地和远程分支

现在遇到一个问题,我们正在工作的一个分支还没有做完,不能add或者commit,但是现在有一个bug需要在另一个分支上去修复,那么我们就需要暂时存储当前的分支。所以就要用到下面的命令

当我们处理完其他的事情之后,再切换回来此分支。 先使用

再取出stash列表中的内容

上面的方法既取出了list内容,并且把list中的元素删除掉。 强行删除分支

10.多人协作 多人协作的工作模式通常是这样: 首先,可以试图用

推送自己的修改; 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并; 如果合并有冲突,则解决冲突,并在本地提交; 没有冲突或者解决掉冲突后,再用

推送就能成功! 如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令

这就是多人协作的工作模式,一旦熟悉了,就非常简单。 11.添加远程地址别名

删除远程地址别名

此方法删除掉origin这个地址别名

查看远程地址别名

推送到远程分支

我们在github上新建一个项目

添加远程仓库

推送上去

加上了 -u 参数,Git不但会把本地的 master 分支内容推送的远程新的 master 分支,还会把本地的 master 分支和远程的 master 分支关联起来,即相当于推送到了一个默认的分支,在以后的推送或者拉取时就可以简化命令。

那么以后我们就不需要关联了,以后推送的话我们只需要输入

克隆远程仓库

假设现在已经存在了一个远程仓库,我们需要把这个仓库克隆到本地,我们需要使用下面的方法

这样我们就把远程的一个仓库取到了本地了。

12.强制操作

强制覆盖本地分支内容

强制覆盖远程内容

13.修改commit的备注

有时候我们commit的备注写错了,需要重新修改,可以利用如下命令

  1. .gitignore的使用

在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件)。这个文件每一行保存了一个匹配的规则例如:

规则很简单,不做过多解释,但是有时候在项目开发过程中,突然心血来潮想把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:

  1. 打tag

在发布版本的时候,经常会用到打标签的方法。

增加一个标签

删除一个标签

推送所有标签

  1. 删除未监视文件

 

转载请注明:静觅 » Git常用命令总结

喜欢 (5)or分享 (0)

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击下面的

想结交更多的朋友吗?

来进击的Coder瞧瞧吧

进击的Coder

QQ群号 99350970 立即加入

进击的Coder灌水太多?

这里是纯粹的技术领地

激进的Coder

QQ群号 627725766 立即加入

想找人聊天解闷?想要学习干货?

微信公众号进击的Coder为你打造

进击的Coder

微信公众号 扫一扫关注