跳至主要內容

Git 快速入门

Mr.Yu大约 5 分钟

Git 快速入门

获取git仓库

获取git仓库通常有两种方式:

  1. 尚未进行版本控制 的本地项目目录 转换 为 Git 仓库;
  2. 从远端服务器 克隆 一个 已存在 的 Git 仓库

通过上述两种方式,你可以在自己电脑上得到git本地仓库

本地项目转Git仓库

对于某尚未进行版本控制的本地目录,想用 Git 进行控制,首先需要通过 git init 初始化 git仓库【该命令将创建一个名为 .git 的子目录,其中含有你初始化的 Git 仓库中所有的必须文件。 此时我们仅仅是对仓库进行初始化,你的项目里的文件还没有被跟踪】,然后通过 git remote add name <remote-repository-url> 将本地仓库与远端git仓库进行绑定

远程克隆git仓库

如果代码存在于远端服务器中 且被git所管理 ,则我们可以通过 git clone <remote-repository-url> 将远端服务器的git仓库克隆到本地相应位置

git基础操作

git的基础操作大致为:暂存代码 ---> 提交代码 ---> 将代码推送到仓库

具体操作还有诸如回滚合并

工作目录下的每一个文件都不外乎这两种状态:已跟踪未跟踪已跟踪的文件是指那些被纳入了版本控制的文件

查看文件的状态 ,我们可以使用 git status 命令实现

暂存代码

当代码修改后,代码将处于 未暂存 状态,这时我们需要通过 git add <file-name> 将修改的代码放入git 暂存区 中(类似于word中的保存文档)

当我们需要取消对某代码的暂存时,我们可以通过 git reset 命令来取消暂存

  • 取消暂存整个文件:
      git reset FILE_NAME
    
    将 FILE_NAME 替换为你想要取消暂存的文件名。
  • 取消暂存文件的部分更改(需要使用 git add -p 命令的交互模式):
      git add -p
    
    然后按照提示操作,选择你想要取消暂存的代码块

请注意,

提交代码

在暂存完代码后,我们便可以通过 git commit 相关命令将代码提交到本地仓库

  • git commit -a :可以不使用git add的情况下直接提交全部代码到仓库
  • git commit -m <msg> :提交时指定提交信息
  • git commit [file1] [file2] ... -m <msg> :提交暂存区的指定文件到仓库区:

另外有时候我们提交完了才发现漏掉了几个文件没有添加【或者提交信息写错了】,此时可以通过 git commit --amend 重新提交

推送代码

提交代码只是 将暂存区代码提交到了本地仓库 ,下面我们还需要通过推送代码将代码从本地git仓库推送到远程git仓库中(如Gitee、Github、Gitlab等)。我们可以通过 git push <远程主机名> <本地分支名>:<远程分支名> 命令实现,其中添加 -f 可以强制推送

  • 提交代码 :将暂存区代码提交到了本地仓库;
  • 推送代码 :将代码从本地git仓库推送到远程git仓库

git进阶操作

分支

Git 保存的不是文件的变化或者差异,而是一系列不同时刻的 快照

Git 的分支,其实本质上是 指向提交对象的 可变指针 。 Git 的默认分支名字是 master。

我们可以通过 git branch 相关命令对分支进行 管理 【创建、删除、查看等】;通过 git checkout 相关命令对分支进行 切换 ;通过 git merage <分支名> 相关命令来 将某分支合并到当前分支

此外,我们可以通过 git fetch <远程主机名> <分支名> 相关命令,从远程仓库获取最新更改但不自动合并或修改当前工作区。fetch操作只是获取远程仓库的更新,并不会自动将这些更新应用到你的本地工作区

请牢记:当你切换分支的时候,Git 会重置你的工作目录,使其看起来像回到了你在那个分支上最后一次提交的样子。 Git 会自动添加、删除、修改文件以确保此时你的工作目录和这个分支最后一次提交时的样子一模一样

补充:

  • git checkout -b <branch-name> 相当于创建并切换到某分支
  • git pull <远程主机名> <远程分支名>:<本地分支名> 相当于拉取并合并冲突分支
  • --merged--no-merged 这两个选项可以 过滤这个列表中已经合并或尚未合并到当前分支的分支

比较文件差异

在合并分支时,如果遇到分支冲突,可以通过 git diff 相关命令比较文件差异。具体而言,如下:

  • git diff: 显示工作区与暂存区之间的差异。
  • git diff --cached 或 git diff --staged: 显示暂存区与最后一次提交之间的差异。
  • git diff HEAD: 显示工作区与最后一次提交之间的差异。
  • git diff <commit>: 显示工作区与指定提交之间的差异。
  • git diff <commit1> <commit2>: 显示两个提交之间的差异。
  • git diff --<file>: 显示指定文件在工作区与暂存区之间的差异。
  • ...

打标签

我们可以通过 git tag 相关命令,对仓库历史中的某一个提交打上标签,以示重要,具体内容可参照git文档

文档查看

在每个git命令后面加上 --help 可以查看相关git文档

如:git branch --help 将会显示 git branch 相关的文档。如下图,详细阐明了命令使用方式

其他常用命令

git log:git日志


参考资料:

[1]. 由 Scott Chacon 和 Ben Straub 撰写并由 Apress 出版的整本 Pro Git 书open in new window