Git快速使用

作者: 温新

分类: 【git】

阅读: 1966

时间: 2021-02-07 16:03:21

使用git就必须要有git仓库,获取git仓库有两种方法。第一种方法:通过git初始化新仓库;第二种方法是从已有的Git的仓库中进行克隆。

获取Git仓库

在工作目录中初始化新仓库

命令:git init

在任意目录中使用git init进行初始化,初始化后,会在当前目录下出现一个名为.git的目录,所有Git需要的数据和资源都存放在这个目录中。

从现有仓库中克隆

命令:git clone 仓库url地址

若想从某个平台(如github)中克隆公有项目,找到该项目的url地址进行克隆,如

<span style="color: rgb(255, 255, 255);">git clone https://...(省略)</span><br></br>

基础使用

对于工作目录下所有文件,其状态分为两种已跟踪未跟踪

已跟踪:指的是文件已被提交到版本控制当中,上一次提交的快照记录了当前文件的状态。若对其修改后,它的状态可能是未更新、已修改或已存入暂存区;对其他文件则都昌未跟踪文件,既没有上次快照记录,又不在当前暂存区。

初次克隆的项目,其工作目录中的所有文件都是已跟踪文件且状态为未修改。

git status 查看当前文件状态

命令:git status

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$ git</span> status</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">On branch master  <span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 当前分支为 master</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">No commits yet   <span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 没有文件提交</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">nothing to commit (create/copy files and use <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"git add"</span> to track)</span>

文件的不同状态,git status查看到的信息是不同的。

git add 跟踪新文件

命令:git add

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$ touch</span> test.txt</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$ git</span> status</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">On branch master</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">No commits yet</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">Untracked files:</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  (use <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"git add <file>..."</span> to include <span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">in</span> what will be committed)</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        test.txt</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">nothing added to commit but untracked files present (use <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"git add"</span> to track)</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 跟踪文件</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$ git</span> add test.txt</span>

忽略某些文件

对于不需要跟踪的文件,可以在当前目录下创建一个.gitignore文件,该文件中写入不需要跟踪的文件。.gitignore可以使用正则对于进行忽略。

.gitignore格式规范:

  • 所有空行或以 # 开头的行都会被Git忽略
  • 可以使用标准的glob模式匹配
  • 匹配模式最后跟反斜杠(/)说明要忽略的是目录
  • 要忽略制定模式以外的文件或目录可以在模式前加了感叹号(!)取反。

案例

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 忽略所有 .md 结尾的文件</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">*.md</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 忽略所有 .md 结尾的文件,a.md除外</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">!a.md</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 忽略 public/ 目录下的所有文件</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">build/</span>

git diff 比较文件的不同。可以比较暂存区和工作区的文件差异

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 查看没有暂存的文件差异内容</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(232, 191, 106) !important">git</span> <span style="box-sizing: border-box;color: rgb(232, 191, 106) !important">diff</span></span>

git diff是比较工作目录中当前文件和暂存区快照之间的差异,也就是修改之后还没有使用git add暂存的变化内容。

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 查看暂存后后的改动内容</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(232, 191, 106) !important">git</span> <span style="box-sizing: border-box;color: rgb(232, 191, 106) !important">diff</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">--cached</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 查看已缓存的与未缓存的所有改动</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(232, 191, 106) !important">git</span> <span style="box-sizing: border-box;color: rgb(232, 191, 106) !important">diff</span> HEAD</span>

git commit 提交更新

命令:git commit

跳过暂存区直接提交

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important">#b.txt文件中写入内容</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(232, 191, 106) !important">echo</span> <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">'world'</span> >> b.txt</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 直接提交</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(232, 191, 106) !important">git</span> commit <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">-a</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">-m</span> <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">'备注'</span></span>

git rm删除文件

命令:git rm

git中删除文件,需要从已跟踪的文件中移除,就是把文件从暂存区中删除,然后提交。

git move移动文件

命令:git move

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 重名名文件</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(232, 191, 106) !important">git</span> <span style="box-sizing: border-box;color: rgb(232, 191, 106) !important">mv</span> test.txt text.txt</span>

git log 查看提交历史

命令:git log

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 列出所有更新</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(232, 191, 106) !important">git</span> log</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 将每个更新放在一行显示 </span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(232, 191, 106) !important">git</span> log <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">--pretty</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">=</span>oneline</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span>

git commit --amend 撤销提交

请登录后再评论