Git -- 常用操作总结(一)

git初识

git 安装与登陆

安装(linux):

1
sudo apt-get install git

登陆:由于git的分布式特性,每一个使用其的电脑都必须注册自己,如下:

1
2
git config --global user.name "Your name"
git ocnfig --global user.email "Your email"

git创建版本库

创建一个空目录

1
2
mkdir learngit
cd ./learngit

将该目录初始化为git仓库

1
git init   #git的初始化,即将当前目录与git仓库进行关联,当前目录会自动生成一个.git文件夹

把文件添加到版本库

1
2
3
echo "Git is a version control system" >> readme.txt
git add readme.txt #将文件由workdirctory添加到stage(暂存区)
git commit -m "wrote a readme file" #将stage的修改添加到版本库

git版本控制

版本回退

提交历史显示命令,用于查看提交历史记录,以便确定要回退到哪个版本

1
git log  #查看提交历史

回退命令,其中HEAD指向当前版本,HEAD^指向上一个版本,HEAD^^指向上上个版本

1
2
3
git reset --hard commit_id	#将仓库回退到指定id版本
# or
git reset --hard HEAD^ #将仓库回退到上一版本

当版本回退成功后,原来的版本丢失,通过 git log 无法查看其commit _id ,这时候可以使用git reflog

1
git reflog  #查看命令历史

工作区 暂存区 版本库

工作区:可以理解为自己的本机工作目录,并且这个目录是还未进入git版本库管理的。在这个状态下,我们可以进行增、删、改各种操作。

暂存区:是所有操作真正提交到版本库的前一步,主要是追踪各种操作,以及为多次操作后的批量提交作准备,避免频繁提交。

版本库:可以简单理解为仓库,进入版本库也就意味着已经登记入库了。版本库还可以进一步分为多个分支,一般有一个master主分支,多个次分支,这样可以进行多个版本的跟踪。

新增、修改与删除

不管是文件的新增,还是修改,我们在工作区完成操作后,都是通过add命令完成向暂存区提交的

1
git add readme.txt

若是删除文件,我们同样要向暂存区报备,通过rm命令记录删除操作

1
git rm readme.txt

最后通过commit命令提交到分支使操作真正生效

1
git commit -m "add readme.txt/del readme.txt"

操作回滚

操作回滚分为三类场景:(1)如果你只是误操作,还未进行add提交到暂存区,那么只需一步操作就可以反悔

1
git checkout -- "readme.txt"  #由于还未add,即意味暂存区还保留着该操作在工作区的上一状态,直接checkout就行

(2)如果你手残地add到了暂存区,那就要分两步完成回滚

1
2
git reset HEDA "readme.txt"   #将暂存区的该次误操作丢弃,并重置为分支中的最新版本状态,其他操作不受影响
git checkout -- "readme.txt" #将此时暂存区的状态映射到工作区,即将误操作回复为版本库状态

(3)如果你不幸到已经commit了误操作,那即意味着误操作已经进入分支中,成为了最新版本,这时候只能通过版本回退的方式来补救

1
git reset --hard HEAD^ #后退到误操作之前的那个版本,这样可能丢失除误操作以外的其他有用操作

从以上操作我们不难发现,暂存区的存在确保了工作区的不当操作不会直接影响分支;同时,我们可以将多次add/rm操作进行一次commit提交,可以起到对操作的分组效果;最后,如果你只是在场景(1)(2)回退,那么可以最大程度的减小对其他add/rm操作的影响,不至于在回滚某个操作时,丢失其他操作。而(3)版本回退显然不是针对某个特定操作,这种回退的代价是难以估量的。

git远程操作

与github进行连接

通过SSH协议将本地git仓库与github进行配对,首先生成SSH key

1
ssh-keygen -t rsa -C "youremail"

执行过后,生成.ssh 目录,其中id_rsaid_rsa_pub 分别代表私钥和公钥。我们只需将公钥中的字符串添加到github账户的”AccountSetting”的”SSH Keys”页面中,就OK了。

添加远程仓库

添加github仓库命令

1
git remote add orgin 仓库地址  #orgin为默认远程仓库地址别名

将本地库推送到远程仓库

1
git push -u origin master  #第一次将本地的master分支推送到远程,以后可以省略'-u'

克隆远程库

直接从远程克隆git仓库,也可以完成本地与远程的关联

1
git clone <ssh/https>远程库地址