Git,GitHub
什么是Git?
- Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
- Git是目前世界上最先进的分布式版本控制系统 .
简史
林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds, 1969年~ )在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。
在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!
Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了 !
Git对比SVN
-
集中式版本控制系统(svn)
版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。
缺点:
-
集中式版本控制系统最大的毛病就是必须联网才能工作
-
合并的时候冲突解决起来麻烦
-
版本控制系统安全性差(集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了 )
-
-
分布式版本控制系统(git)
分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。 -
注意:实际使用分布式版本控制系统的时候 ,版本控制系统通常也有一台充当“中央服务器”的电脑 。
Git安装&基本使用(在linux上安装git)
-
安装
sudo apt-get install git -
查看版本
git --version -
个人信息配置
git config --global user.mail “xxx@qq.com” (引号中是你的邮箱地址)
git config --global user.name “James” (引号中是你想要展示的名字) -
在本地电脑搭建git仓库&基本使用
-
选择一个合适的地方创建一个空目录“gitdemodir”
mkdir gitdemodir
-
cd进入该目录,通过 git init 命令把这个目录变成git可以管理的仓库
cd gitdemodir git init
-
创建一个文件,demo1.txt,例如:
echo "hello world!" > demo1.txt
-
使用git add将文件添加到仓库
git add demo1.txt
-
使用命令git commit将文件提交到仓库
git commit -m "add hello" # “ -m "后面表示的是本次提交的时候的说明,为了以后方便找到改动记录 # 注意:我们可以一次性提交多个文件
-
撤销修改
git checkout --demo1.txt
-
从版本库中直接删除该文件
git rm demo1.txt
-
查看暂存区文件(是否有冲突)
git status
-
查看操作日志
git log # 可以加参数将信息打印在一行 git log --pretty=oneline
注意:在这里会显示类似1093ab…之类的是commit id(版本号),每提交一个版本则会生成一个版本号【版本号都不相同】 -
回退到上一个版本
# 修改指针,将指针指向上一个 git reset --hard HEAD^
-
也可以回退到指定版本
# 类似1093ab...之类的是commit id(版本号) git reset -- hard 1093ab
-
查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
git relog
Git 工作区、暂存区和版本库
- 工作区:就是你在电脑里能看到的目录。
- 暂存区:
- 英文叫stage, 或index。一般存放在 “.git目录下” 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
- 在版本库中存放了很多东西,其中最重要的就是成为stage(index) 的暂存区。还有git给我创建的一个master分支,以及指向master的指针head。
- 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
Git标签管理
发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。
-
查看分支
git branch
-
切换到你想要打标签的分支
# 切换到master分支 git checkout master # 另外附上"创建并切换分支"方法 git checkout -b fenzhi1
-
在当前分支打一个新标签
git tag v1.0
-
对指定的commit id 打标签
git tag v0.9 f52c633
-
查看所有标签,会显示自定义的版本号,例如:v0.9
git tag
-
还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:
git tag -a v0.1 -m "version 0.1 released" 1094adb
-
用命令git show 可以看到说明文字:
git show v0.1
-
如果标签打错了,也可以删除
git tag -d v0.1
-
如果要推送某个标签到远程,使用命令git push origin :
git push origin v1.0
-
一次性推送全部尚未推送到远程的本地标签:
git push origin --tags
Git分支管理
分支管理策略,参考以下链接内容:
https://www.jianshu.com/p/7aa32a0d9717
-
创建分支
# 创建并切换到分支dev git checkout -b dev
-
查看当前分支
git branch
-
切换回master主分支
git checkout master
-
把dev分支的工作成果合并到master分支上
git merge dev
-
合并完成后,就可以放心地删除dev分支了
git branch -d dev
-
使用git status也可以告诉我们冲突文件
git status
-
注意:处理完冲突后要重新add和commit
-
推送分支:推送分支,就是把该分支上的所有本地提交推送到远程库
# 将主分支推送至远程仓库 git push origin master # 如果要推送其他分支,比如dev,就改成: git push origin dev
注意:不是一定要把本地所有分支往远程推送,取决项目
-
查看分支合并图
git log --graph
-
查看日志(一行查看)
git log --pretty=oneline
远程仓库GitHub
配置
-
首先注册GitHub账号
https://github.com/ -
Linux下安装ssh:
sudo apt install openssh-server
-
创建ssh key:
ssh-keygen -t rsa -C "xxx@qq.com"
一路回车即可,顺利的话则会在.ssh目录中生成两个文件,id_rsa与id_rsa.pub这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
(该步骤是为了获取本地公钥id_rsa.pub) -
登陆githup,打开account settings,“ssh keys页面”:然后点击“add ssh key”,填上任意的title,在key的文本框中粘贴id_rsa.pub文件的内容。然后点击add key,就可以看到已经添加的key。
添加远程仓库
-
登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库.
-
根据GitHub的提示,在本地的gitdemo仓库下运行命令:
git remote add origin git@github.com:userName/gitdemo.git # userName是你的GitHub账户
-
把本地库的所有内容推送到远程库上
git push -u origin master
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
-
以后提交远程只需要:
git push origin master
-
从远程仓库克隆
git clone git@github.com:userName/gitdemo.git
-
远程拉取,保持同步
git pull origin master
私人仓
-
为什么要私人仓?
因为公共仓是所有人都能访问,如果你的项目不想共享给所有人,就选择建立私有仓
-
自从GitHub被微软收购之后,允许用户开设不限个数的免费私人仓,但是协作人只能添加3个,加上自己一共4人。
https://github.blog/2019-01-07-new-year-new-github/ -
可以在私人仓中添加3名协作者(Collaborators)
-
登陆GitHub创建一个代码仓项目
-
在输入框输入对方的GitHub名字或者注册邮箱
-
添加后把邀请链接发给对方
-
对方(协作者)同意后,可以在其setting -> Repositories最底部看到这个仓库。在github首页是看不到的
-
window下操作
参考:
https://blog.csdn.net/Ryan_lee9410/article/details/81014981
参考2:Git安装和使用
https://www.cnblogs.com/ximiaomiao/p/7140456.html