Git简介
Git是由Linus花了两周时间自己用C语言写的分布式版本控制系统。
集中式版本控制系统:
1、用电脑从中央服务器下载最新版版本库,进行修改,改动完毕再上传给中央服务器
2、需要联网且深受网速影响
分布式版本控制系统:
1、每个人的电脑都是一个版本库,只需把修改的操作推送给对方。
Git的命令
Git可以安装在以下操作系统:
Linux、MacOS、Windows、Solaris、Raspberry PI(树莓派)
创建版本库
$ mkdir learngit //创建空文件夹
$ cd learngit
$ pwd //显示当前目录
/Users/michael/learngit
目录转为仓库
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
这个目录是Git来跟踪管理版本库的
文件添加到仓库
$ git add readme.txt
文件提交到仓库
$ git commit -m "wrote a readme file"
[master (root-commit) eaadf4e] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt
-m
后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
查看状态、不同
git status
命令查看是否被修改。
git diff
查看修改的地方
版本转换
-
HEAD
指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
。 -
穿梭前,用
git log
可以查看提交历史,以便确定要回退到哪个版本。 -
要重返未来,用
git reflog
查看命令历史,以便确定要回到未来的哪个版本。
版本撤销
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>
,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
删除文件
git rm
用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能用git checkout
恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
远程推送
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
;
关联后,使用命令git push -u origin master
第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master
推送最新修改;
分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的!当有网络的时候,再把本地提交推送一下就完成了同步,真是太方便了!
仓库克隆
要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone
命令克隆。
分支
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
或者git switch <name>
创建+切换分支:git checkout -b <name>
或者git switch -c <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
查看分支合并图:git log --graph
参考链接:廖雪峰