# Git 学习 01- 基本操作

三叶

# 创建版本库

版本库 (repository) 是一个目录,这个目录里的所有文件都可以被 Git 管理起来,每个文件的修改、删除、Git 都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以还原。

创建版本库步骤:

  1. 选择一个合适地方,创建一个空目录
  2. 通过 git init 命令把这个目录变成 Git 可以管理的仓库

# 把文件添加到版本库

把一个文件放到仓库只需要两步(如添加一个 readme.txt 文件):

  1. git add readme.txt 用命令 git add 告诉 Git, 把文件添加到暂存区。可反复多次使用,添加多个文件。

  2. git commit -m "wrote a readme file"

    git commit 告诉 Git, 把文件提交到仓库。-m 后面输入的是本次提交的说明,注意说明一定要有意义,如告诉仓库本次提交做了什么事,方便后续的版本控制。

# 查看工作区状态

要查看当前工作区的状态,使用 git status 命令

如果有文件被修改过,你又想知道修改了什么 用 git diff filename 查看修改的内容。git diff 命令可以告诉你当前工作区的文件和仓库的有什么不同。

# 版本回退

  • HEAD 指向的版本就是当前版本,因此,Git 允许我们在版本的历史之间穿梭,使用命令 git reset --hard commit_id 。版号只要前几位就行了,只要能识别,也可以用 HEAD 和 ^ 表示回退到哪一版。
  • 穿梭前,用 git log 可以查看提交历史,以便确定要回退到哪个版本。
  • 重返过去时未来的记录用 git log 就看不到了。要重返未来,用 git reflog 查看命令历史,以便确定要回到未来的哪个版本。

# 撤销修改

  • 场景 1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令 git checkout -- filename
  • 场景 2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令 git reset HEAD <filename> ,就回到了场景 1,第二步按场景 1 操作。
  • 场景 3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

# 删除文件

如果你在文件管理器中把某个文件删了,或者用 rm 命令删了

$ rm test.txt

这个时候,Git 知道你删了文件,因此,工作区和版本库就不一致了。

现在有两种情况。

  1. 确实要从版本库中删除该文件,那就用命令 git rm 删掉 并且 git commit

    $ git rm test.txt
    $ git commit -m "remove test.txt"
    

    tips:先手动删除文件,然后使用 git rm <file> 和 git add<file > 效果是一样的。

  2. 删除错了,要从版本库中把误删的文件恢复到最新版本。

    $ git checkout -- test.txt
    

    git checkout 其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以一键还原。

# 添加远程库

远程库既可以充当本地仓库的备份,又可以让其他人通过该仓库来协作,可谓一举多得。

创建远程库并将本地与远程库连接。

步骤:

  1. 登录 github 创建一个新的仓库,复制该仓库的 SSH

  2. 在本地仓库上运行

    $ git remote add origin git@github.com:maoding1/learngit.git
    

    (后面的一大串是复制的 SSH) 使本地仓库与远程库连接。

    git 会把远程库的名字默认设为 origin

  3. 把本地内容推送到远程库上

    $ git push -u origin master
    

    -u 参数实际上设置了远程仓库的默认值(比如有多个远程仓库) 之后就可以简化 git pull 和 git push 的命令

现在只要本地做了提交,就可以通过 git push origin master 把本地分支的修改推送到 github

tips:要删除远程库 可以用 git remote rm <name> 命令,但这只是解除了本地与远程的绑定关系,要真正删除远程库,需要登陆 github 手动删除。

# 克隆远程仓库

知道仓库的 SSH 后,通过 git clone SSH 命令克隆到本地

更新于

请我喝[茶]~( ̄▽ ̄)~*

MikeMao 微信支付

微信支付

MikeMao 支付宝

支付宝

MikeMao 贝宝

贝宝