Git
1. Git简介
Git是分布式版本控制系统(distributed version control system,简称DVCS),分为本地仓库和远程仓库
2. Git工作流程
clone与pull的区别
- clone操作是一个从无到有的克隆操作(只执行一次)。因此不需要本地进行
git init
初始化 - git pull是拉取远程分支更新到本地仓库的操作(要执行很多次)。事实上,git pull是相当于从远程仓库获取最新版本,然后再与本地分支merge(合并)。
git init
把当前目录变成Git可以管理的仓库
git add
把文件添加到仓库
git add .
添加文件下所有文件及文件夹
git commit -m "comment"
把文件提交到仓库
为什么Git添加文件需要
add
,commit
一共两步呢?因为commit
可以一次提交很多文件,所以你可以多次add
不同的文件,比如:$ git add file1.txt $ git add file2.txt file3.txt $ git commit -m "add 3 files."
git status
查看仓库当前的状态
git diff
查看修改之后的不同(difference)
版本回退
穿梭前,用git log --pretty=oneline
可以查看提交历史,以便确定要回退到哪个版本。
HEAD
指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
。
要重返未来,用git reflog
查看命令历史,以便确定要回到未来的哪个版本。
工作区和版本库
工作区:git init
把当前目录变成工作区
版本库:工作区的隐藏目录.git
,是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master
,以及指向master
的一个指针叫HEAD
。
第一步是用
git add
把文件添加进去,实际上就是把文件修改添加到暂存区;第二步是用
git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。
撤销修改
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git restore <file>
。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git restore --staged <file>
,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
删除文件
rm file
删除文件
现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm file
删掉,并且git commit
另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:"git restore <file>
添加远程库
第1步:创建SSH Key。在用户主目录下(cd ~
然后pwd
,即可看到用户主目录路径C:\Users\ThinkPad\.ssh
),看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa
和id_rsa.pub
这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
ssh-keygen -t rsa -C "youremail@example.com"
把邮件地址换成自己的,然后一路回车,都使用默认值即可
如果一切顺利的话,可以在用户主目录里找到.ssh
目录,里面有id_rsa
和id_rsa.pub
两个文件,这两个就是SSH Key的秘钥对,id_rsa
是私钥,不能泄露出去,id_rsa.pub
是公钥,可以放心地告诉任何人。
第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub
文件的内容
关联&提交远程库
要关联一个远程库,使用命令git remote add blog git@github.com:GGBond6/push_blog.git
;
关联一个远程库时必须给远程库指定一个名字,origin
是默认习惯命名;
关联后,使用命令git push -u origin master
第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master
推送最新修改;
解绑远程库
查看本地已经关联的远程库:git remote -v
git remote remove origin
克隆远程库
要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone
命令克隆。
Git支持多种协议,包括https
,但ssh
协议速度最快。
分支管理
查看分支:git branch
查看项目的分支们(包括本地和远程):git branch -a
删除本地分支:git branch -d <name>
删除远程分支:git push origin --delete <Name>
创建分支:git branch <name>
切换分支:git