# Git 学习 01- 基本操作
# 创建版本库
版本库 (repository) 是一个目录,这个目录里的所有文件都可以被 Git 管理起来,每个文件的修改、删除、Git 都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以还原。
创建版本库步骤:
- 选择一个合适地方,创建一个空目录
- 通过
git init
命令把这个目录变成 Git 可以管理的仓库
# 把文件添加到版本库
把一个文件放到仓库只需要两步(如添加一个 readme.txt 文件):
git add readme.txt
用命令 git add 告诉 Git, 把文件添加到暂存区。可反复多次使用,添加多个文件。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 知道你删了文件,因此,工作区和版本库就不一致了。
现在有两种情况。
确实要从版本库中删除该文件,那就用命令
git rm
删掉 并且 git commit$ git rm test.txt $ git commit -m "remove test.txt"
tips:先手动删除文件,然后使用 git rm <file> 和 git add<file > 效果是一样的。
删除错了,要从版本库中把误删的文件恢复到最新版本。
$ git checkout -- test.txt
git checkout 其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以一键还原。
# 添加远程库
远程库既可以充当本地仓库的备份,又可以让其他人通过该仓库来协作,可谓一举多得。
创建远程库并将本地与远程库连接。
步骤:
登录 github 创建一个新的仓库,复制该仓库的 SSH
在本地仓库上运行
$ git remote add origin git@github.com:maoding1/learngit.git
(后面的一大串是复制的 SSH) 使本地仓库与远程库连接。
git 会把远程库的名字默认设为 origin
把本地内容推送到远程库上
$ 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
命令克隆到本地