Git快速使用
使用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 撤销提交