「这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战」。
本篇文章将涵盖你在使用 Git 完成各种工作中将要使用的各种基本命令。 在学习完本篇文章后,你能够配置并初始化一个仓库(repository)、开始或停止跟踪(track)文件、暂存(stage)或提交(commit)更改,如何浏览你的项目的历史版本以及不同提交(commits)间的差异,操作远程分支等。
获取Git仓库
初始化仓库
新建一个目录,然后我们进入该文件目录输入如下命令:
1 | csharp复制代码git init |
该命令会在这个目录下创建一个.git的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件。
克隆现有的仓库
假如你在github中创建了一个仓库或者你看中了一个开源项目想贡献一份自己的力量,就要把这个仓库拉下来,就需要进行clone操作
例如我在github中有一个仓库
我现在把它clone下来
1 | scss复制代码lirui@liruideMacBook-Pro IdeaProjects % git clone git@github.com:lrlr/git_learning.git |
Git基本操作命令
查看当前文件状态
1 | lua复制代码git status |
如果要查看目前文件处于什么状态,就需要用到此命令,通过这个命令可以查到文件是已更新,还是已暂存或者是未暂存等状态
1 | vbnet复制代码 |
通过这个示例可以看到我有一个文件还处于Untracked就是未暂存状态。
还有一个命令可以查到更为细致的文件状态展示,叫状态简览命令
1 | bash复制代码lirui@liruideMacBook-Pro git_learning % git status -s |
每个文件前面都会有对应的字母,这些字母的含义是什么呢?
新添加的未跟踪文件前面有 ??
标记,新添加到暂存区中的文件前面有 A
标记,修改过的文件前面有 M
标记。 你可能注意到了 M
有两个可以出现的位置,出现在右边的 M
表示该文件被修改了但是还没放入暂存区,出现在靠左边的 M
表示该文件被修改了并放入了暂存区。 例如,上面的状态报告显示: .idea/workspace.xml
文件在工作区被修改了但还没暂存,README.md
文件被修改了并将修改后的文件放入了暂存区。
跟踪新文件
1 | csharp复制代码git add |
如果需要将一个新增的文件或者修改的文件加入到暂存状态,就需要使用跟踪命令
1 | csharp复制代码//将本地所有的文件都加入到暂存区 |
查看已暂存和未暂存之间的修改
1 | 复制代码git diff |
如果你想知道你对一个文件修改了哪些东西,就可以通过git diff命令来查看,例如我的README.md是已暂存的文件,然后我在里面新加了一句话,不暂存,我们来看下git diff 命令会显示什么
1 | diff复制代码lirui@liruideMacBook-Pro git_learning % git diff |
这里可以看到就会把我修改的内容显示出来,注意,git diff命令只会展示未暂存的修改内容,如果你修改后暂存了就不会再显示你的修改
1 | sql复制代码lirui@liruideMacBook-Pro git_learning % git add . |
提交更新
1 | sql复制代码git commit |
通过commit命令我们就可以将所有暂存的数据提交到本地数据库,例如如下命令
1 | ruby复制代码lirui@liruideMacBook-Pro git_learning % git commit |
这个命令需要你自行填写提交备注,保存后才能正式提交成功,这样操作其实很繁琐,我们还有一个简便的提交命令可以在提交命令当前行输入命令
1 | sql复制代码git commit -m "备注内容" |
跳过使用暂存区域
提交的数据必须是已经暂存的数据,每次进行提交操作还需要执行一下暂存命令,如何跳过暂存进行直接提交呢?
只需要给 git commit 加上 -a选项即可,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add
步骤:
1 | perl复制代码lirui@liruideMacBook-Pro git_learning % git status |
这里可以看到我对README.md做了修改但是是未暂存的状态,这时候我们直接操作git commit -a看下是否能提交成功
1 | sql复制代码lirui@liruideMacBook-Pro git_learning % git commit -a -m '跳过暂存' |
直接提交成功,这样就省去了我们多个操作命令,一个命令就可以完成提交
移除某个文件
1 | bash复制代码git rm |
如果想从Git中移除某个文件,可以使用git rm命令完成,这个命令不仅会将该文件从暂存区域移除,还会从工作目录中删除指定的文件。
1 | bash复制代码lirui@liruideMacBook-Pro git_learning % ls |
这里我移除了REDME.md文件,这个文件在我的目录中也同时被移除了
还有一种场景是我只想在Git仓库中删除文件,但希望在工作目录中保留,那么我们可以使用git rm –cached
1 | vbnet复制代码//示例代码 |
通过示例可以看到,README.md已经在Git中删除,但是在工作目录中还是完美保留的
查看提交历史
1 | bash复制代码git log |
如果你想查看你的提交历史,实现这个查看最简单的命令就是git log
执行该命令就会列出你的所有提交记录,我的提交记录比较长,就截图展示了部分历史。
git log
有许多选项可以帮助你搜寻你所要找的提交, 接下来我们介绍些最常用的。
一个常用的选项是 -p
,用来显示每次提交的内容差异。 你也可以加上 -2
来仅显示最近两次提交w q
1 | sql复制代码lirui@liruideMacBook-Pro git_learning % git log -p -2 |
git log命令除了显示基本信息,还会显示一些commit 信息,如果你只想看到每次提交的简略统计信息,那可以使用 –stat选项
1 | sql复制代码lirui@liruideMacBook-Pro git_learning % git log --stat |
git log命令还支持许多其他选项,我就不一一列举了,我这里就展示一些供大家参考:
撤销操作
1 | sql复制代码git commit --amend |
有时候我们可能提交完之后发现自己的提交信息写错了,或者发现漏了几个文件没提交,就可以使用–admend命令来重新提交。
1 | sql复制代码lirui@liruideMacBook-Pro git_learning % git commit -m '提交' |
最终你只会有一个提交 - 第二次提交将代替第一次提交的结果。
取消暂存的文件
1 | perl复制代码git reset HEAD |
当你有两个文件都还没有暂存,这时你只想暂存一个文件,结果不小心执行了git add .
,这时需要取消某个文件的暂存状态,代码如下:
1 | perl复制代码# 两个文件均已暂存 |
查看远程仓库
1 | 复制代码git remote |
如果想查看你已经配置的远程仓库服务器,可以运行 git remote
命令。它会列出你指定的远程服务器的简写,如果你想看到这个简写对应的远程服务器的url,可以指定选项 -v
。
1 | scss复制代码lirui@liruideMacBook-Pro git_learning % git remote |
添加远程仓库
运行 git remote add <shortname> <url>
添加一个新的远程 Git 仓库
1 | scss复制代码lirui@liruideMacBook-Pro git_learning % git remote add mg git@github.com:lrlr/git_learning.git |
从远程仓库拉取
1 | css复制代码git fetch [remote-name] |
这个命令会访问远程仓库,从中拉取所有你还没有的数据。
注意它并不会自动合并或修改你当前的工作,当准备好时你必须手动将其合并入你的工作。
如何你想拉取后自动合并远程分支到当前分支,可以使用git pull
推送到远程分支
1 | css复制代码git push [remote-name] [branch-name] |
例如你想讲本地master分支推送远程分支origin上,可以进行如下操作
1 | css复制代码lirui@liruideMacBook-Pro git_learning % git push origin master |
现在,你可以完成所有基本的 Git 本地操作-创建或者克隆一个仓库、做更改、暂存并提交这些更改、浏览你的仓库从创建到现在的所有更改的历史、撤销、取消暂存、查看、拉取、推送远程分支。 下一篇文章我将介绍Git最有亮点的功能,Git分支,还没有关注我的小伙伴赶紧关注一波吧,带你畅游Git的世界。
本文转载自: 掘金