Git 学习笔记 —— 基础
pbov7399
8年前
<p style="text-align: center;"><img src="https://simg.open-open.com/show/8056209ebfbd7457a4dad984623424ee.png"></p> <h2><strong>获取 Git 仓库</strong></h2> <p>获取 Git 项目仓库的方法有两种:</p> <ol> <li>从本地目录中导入所有文件到 Git 中</li> <li>从一个服务器下载现有的 Git 仓库</li> </ol> <h3><strong>从现有目录中初始化仓库</strong></h3> <p>进入该目录</p> <pre> $git init </pre> <p>该命令创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件。</p> <h3><strong>克隆现有的仓库</strong></h3> <p>克隆仓库的命令格式是 git clone [url]</p> <pre> $ git clone [url] </pre> <h2><strong>记录每次更新到仓库</strong></h2> <p>在工作目录下的文件只有两种状态: 已跟踪 和 未跟踪 。</p> <p>已跟踪的文件 就是纳入了版本管理的文件,它们也有三种状态: 未修改 、 已修改 、 已放入暂存区 。工作区中除了已跟踪的文件,其他都是 未跟踪的文件 。</p> <p>初次 克隆 某个仓库的时候,所有文件属于 已跟踪 文件,并处于 未修改 状态。</p> <p style="text-align: center;"><img src="https://simg.open-open.com/show/de915fe5ac337e36f316b921616d63b5.png"></p> <h3><strong>检查当前文件的状态</strong></h3> <p>要查看哪些文件处于什么状态,可以使用下面的命令。</p> <pre> $ git status </pre> <p>使用 git status -s 或者 git status --short 会得到紧凑的输出。</p> <h3><strong>跟踪新文件</strong></h3> <p>使用 git add 命令开始跟踪一个文件,这是一个多功能命令。</p> <pre> $ git add <filename> </pre> <h3><strong>管理修改过的文件</strong></h3> <p>暂存已修改文件</p> <p>要暂存修改过的文件,需要运行 git add 命令。</p> <pre> $ git add <filename> </pre> <p>撤销暂存的文件</p> <pre> $ git reset HEAD <filename> </pre> <p>撤销对文件的修改</p> <pre> $ git checkout -- <filename> </pre> <p>这个命令是很危险的,一旦使用了这个命令,那对这个文件做的任何修改都会消失,回不来了。</p> <h3><strong>忽略文件</strong></h3> <p>在目录下创建一个 .gitignore 文件,列出要忽略的文件模式,格式规范如下:</p> <ul> <li>所有空行或以 # 开头的行都被忽略</li> <li>可以使用标准的 glob 模式匹配</li> <li>匹配模式可以以 / 开头防止递归</li> <li>匹配模式可以以 / 结尾指定目录</li> <li>要忽略指定目录以外的文件,可以用 ! 取反</li> </ul> <p>glob 模式</p> <p>所谓 glob 模式是指 `` 使用的简化了的正则表达式。</p> <ul> <li>* 匹配零或多个任意字符</li> <li>[abc] 匹配任意一个列在方括号里面的字符</li> <li>? 只匹配一个任意字符</li> <li>[0-9] 匹配两个字符范围内所有字符</li> <li>** 匹配任意中间目录 a/**/z ,匹配 a/z a/b/z a/b/c/z</li> </ul> <h3><strong>查看已暂存和未暂存的修改</strong></h3> <p>要查看未暂存的文件更新了哪些部分,不加参数直接输入 git diff</p> <pre> $git diff </pre> <p>此命令比较的是工作目录中 当前文件 和 暂存区快照 之间的差异,也就是说,当你暂存了所有修改过的文件之后,运行 git diff 是不会有什么输出的。</p> <p>若要查看已暂存的内容,可以用以下命令</p> <pre> $ git diff --staged </pre> <h3><strong>提交更新</strong></h3> <p>提交时记录的是放在暂存区的快照,任何未暂存的仍然保持已修改状态,可以在下次提交时纳入版本管理。</p> <pre> $git commit -m '简短的提交信息' </pre> <p>跳过使用暂存区</p> <p>把所有已经跟踪过的文件暂存起来一并提交,跳过 git add 步骤,给 git commit 加上 -m 选项。</p> <pre> $ git commit -a -m '简短的提交信息' </pre> <p>修改提交</p> <p>提交完发现漏了文件没有提交,或者提交信息填错了。此时可以运行带有 --amend 选项的提交命令尝试重新提交。</p> <pre> $ git commit --amend </pre> <p>提交后发现忘记了暂存某些需要的修改,可以像下面这样操作:</p> <pre> $ git commit -m 'init commit' $ git add forgotten_file $ git add --amend </pre> <p>这样,第二次的提交将代替第一次提交。</p> <h3><strong>移除文件</strong></h3> <p>要从 Git 中移除某个文件,必须从已跟踪文件清单中移除,然后提交。</p> <pre> $ git rm < 列出文件名 | 目录名 | glob 模式 > </pre> <p>强制删除</p> <p>如果要删除的文件已经修改过,并且已经放到了暂存区,就需要强制删除 -f (force)</p> <pre> $ git rm -f <files> </pre> <p>取消跟踪</p> <p>如果想让文件继续留在磁盘,但是并不想让 Git 继续跟踪。</p> <pre> $ git rm --cached <files> </pre> <h3><strong>文件重命名</strong></h3> <pre> $ git mv old_name new_name </pre> <p>运行 git mv 等于运行了下面三条命令</p> <pre> $ mv README.md README $ git rm README.md $ git add README </pre> <h3><strong>查看提交历史</strong></h3> <pre> $ git log </pre> <p>不加任何参数, git log 会按提交时间列出所有更新,最近的更新放在上面。</p> <h2><strong>远程仓库的使用</strong></h2> <p>远程仓库是指托管在因特网或其他网络中你项目中的版本库。</p> <h3><strong>查看远程仓库</strong></h3> <p>如果想查看你已经配置的远程仓库服务器,可以运行 git remote 命令。它会列出你指定的每一个远程服务器的简写。</p> <pre> $git remote </pre> <p>也可以指定选项 -v ,会显示需要读写远程仓库使用 Git 保存的简写以及其对应的 URL</p> <pre> $git remote -v </pre> <p>如果你的远程仓库不止一个,该命令会将他们全部列出。</p> <h3><strong>添加远程仓库</strong></h3> <pre> $ git remote add <shortname> <url> </pre> <p>添加一个新的远程 Git 仓库,同时指定一个你可以轻松引用的简写。</p> <p> </p> <p>来自:http://mertensming.github.io/2016/11/07/learn-git-0/</p> <p> </p>