作者及其背景:仔姜,大三学生,幼儿园英语水平,熟系Linux文件基本操作(最基础的)
文章内容或许有些疏漏之处还望各位大佬见谅,如果构成侵权或出现其他问题,请联系我邮箱:zhaozijiang_yjt@163.com,如果需要更全的知识请移步廖老师Git教程
学习内容来源:廖雪峰Git教程:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
感谢廖雪峰老师提供的教程
正文开始:
Git简介
什么是Git?
Git是目前世界上最先进的分布式版本控制系统(就是一个版本控制系统=_=)
Git的诞生
因为与BitMover公司的某些原因,导致了Linus花费了两星期时间写出了Git。
集中式VS分布式
集中式:版本库集中存放在中央服务器,而工作时,需要使用的是自己的电脑,从中央服务器取得最新的版本,然后工作才能展开,工作完成后,又需要将自己的修改推送至中央服务器。
集中式版本控制系统最大的特点是必须联网才能工作。
分布式:没有中央服务器,每一台电脑就是一个完整的版本库,工作时不需要联网,多人协作时,只需要把各自的修改推送给对方,就可以互相看到对方的修改。
分布式版本控制特点:安全性更高,发生意外时无须太过担心,可以从其他电脑复制过来,开源免费(划重点)
安装Git
(这里只介绍Linux与Windows平台,对于其他平台没有接触,不好意思写)
Linux平台
$sudo apt-get install git 或 $git apt install git
Windows平台
从Git官网直接下载安装程序,或选择国内镜像,然后使用默认设置,一直next即可
安装成功后,在开始菜单找到“Git”-->"Git Bash",蹦出一个类似命令提示符的窗口,说明Git安装成功!
安装完成后还需进行最后一步设置,在Bash中输入;
$git config --global user.name"YourName"
$git config --global user.email"email@example.com"
因为Git是分布式版本控制系统,所以每一个机器都必须拥有身份:你的名字与email地址。
创建版本库
1、创建一个空目录
$mkdir learngit
$cd learngit
$pwd
2、将该目录变为Git可管理的仓库
$git init
把文件添加至版本库
所有版本控制系统其实只能跟踪文本文件的改动,Git也不例外,eg:.txt、.html、.exe,建议使用UTF-8进行编码
1、将文件添加至仓库:
$git add readme.txt
2、把文件提交至仓库:
$git commit -m "wrote a readmefile"
注:双引号("")里的内容可以自己定义
时光机穿梭
readme.txt文件修改后,查看仓库当前状态:
$git status
查看具体的修改内容:
$git diff “readme.txt”
$git add "readme.txt"
$git status #查看是否包含修改后的文件
$git commit -m "add distributed"
$git status #查看仓库当前状态
注:Linux文件中“#”代表着注释,所以这里读者只需将“#”看为“//”就好了
版本回退
查看提交日志:
$git log 或
$git log --pretty=oneline #查看版本号(日志)
回退上一个版本:
$git reset --hard HEAD^
回退上100个版本:
$git reset --hard HEAD~100
查看文件内容:
$cat "readme.txt"
回退之后查看日志:
$git log #无法发现最新的版本
#查看上面的命令行获取commit id(没被关闭才可看到)
回到最新版本:
$git reset --hard "commit id"
注:双引号("")里的内容请根据命令行显示的字符进行输入
查看文件内容:
$cat "readme.txt"
找不到新版本的commit id:
$git reflog #查看Git所记录使用者的每一次命令
$git reset --hard "commit id"
$cat "readme.txt"
工作区与暂存区
工作区即电脑中可随意查看的目录
版本库即工作区的一个隐藏目录——.git目录
暂存区即版本库中被称为“stage”(或“index”)的文件
将文件往Git版本库添加:
$git add "readme.txt"将文件添加到暂存区;
$git commit "XXX"把暂存区所有内容提交到当前分支,即将需要提交的文件修改全部放至暂存区,一次性提交暂存区修改至分支。
管理修改
查看工作区版本库最新版本区别:
$git diff HEAD --"readme.txt"
再添加,提交
撤销修改
方法一:修改了文件未提交至暂存区:
删除修改,手动恢复至上一版本状态。
$git status #查看
$git checkout --"readme.txt" #丢弃工作区修改
注意:①"readme.txt"修改后未添加至暂存区,撤销修改就回到和版本库一模一样的状态。
②"readme.txt"已添加至暂存区后,又作了修改,撤销修改后就回到添加到暂存区后的状态。
总而言之,就是让readme.txt回到最近一次的git commit或git add时的状态。
注:git checkout --reademe.txt中的“--”很重要,如果没有“--”,就变成了”切换到另一个分区”的命令。
方法二:已将“readme.txt”git add至暂存区:
$git status
$git reset HEAD "readme.txt"
$git status
$git checkout --"readme.txt"
方法三:已经提交修改至版本库还未推送至远程:
$git log 或
$git log --pretty=oneline
$git reset --hard HEAD^ 或
$git reset --hard HEAD~"number" #参考版本回退
删除文件
前置背景:
$vi test.txt
$git add test.txt
$git commit -m "add test.txt"
$rm test.txt
回到现在:
$git status
两个选择:
①确认删除
$git rm test.txt
$git commit -m "remove test.txt"
②误删文件,恢复至最新版本
$git checkout --test.txt
注:由于只恢复至最新版本,使用者会丢失最近一次提交后修改的内容
来源:oschina
链接:https://my.oschina.net/u/4367678/blog/3965947