最近大概花了一周时间系统了解了下git的基础知识,这里做个总结
1.git和svn的区别是什么
git属于分布式版本系统,svn属于集中式版本系统。分布式系统中,版本库存放于任意一台电脑(断网时,仍然可以用,因为自己电脑就是个版本库),再选择一台作为分布式版本控制系统(负责管理各个版本库)。集中式系统中,版本库存放于中央服务器(断网时,GG,因为版本库在别人那,自己看不到了),其余电脑连接中央服务器使用。
2.查看系统是否安装了git
$git
3.为git设置名称,邮箱
$git config --global user.name 'xxx'
$git config --global user.email 'xxx@xxx.com'
4.何为版本库
本质就是一个目录里面的内容,可以用
$mkdir xxx
$cd xxx
$git init
即可创建一个版本库
5.如何把一个文件放入Git仓库
$git add xxx (此方法可以多次提交 即 git add xxx 回车 git add yyy 也可以 git add xxx yyy)
$git commit -m 'xxx'
6.查看仓库当前状态
$git status
7.查看文件具体修改的内容
$git diff xxx
8.查看提交日志
$git log
9.回退上个版本 (git 回退原理是git在版本内部有个执行当前版本的指针HEAD,git通过控制指针进行进退)
$git reset --hard 版本号
10.查看每次命令
$git reflog
11.工作区,版本库和暂存区
工作区是最先开始建立的那个目录xxx
版本库是这个目录里面的包含.git目录的内容
版本库中有个叫stage的是暂存区
其关系如下图:
12.撤销修改
1)$git checkout xxx
文件没放到暂存区,撤销后和版本库一模一样
文件已放到暂存区又做了修改,撤销后和暂存区一模一样
2)$git reset HEAD xxx,$git reset --hard xxx
把文件从暂存区撤销放回工作区
13.删除文件
$git rm xxx
14.删除文件后,立即恢复文件
$git checkout -- test.txt
15.本地仓库与远程仓库GitHub建立ssh连接
$ssh-keygen -t -rsa -C '邮箱'
登陆GitHub 打开“Account Setting”,在“SSH keys”页面点击“Title”,在key文本框中粘贴id_rsa.pub文件内容,然后点击“Add key”添加key
16.使自己的GIt仓库与远程的Git仓库进行同步
前提:GitHub上新建的仓库,并且千万不要选择,initialize this repository with a README,原因在这个选择里面有写
然后:
$git remote add origin xxx(git的地址,就是git@xxx那长串)
$git push -u origin master (第一次推送要加-u,以后都可以不用加)
17.分支的创建,查看,切换,合并,删除
创建dev分支:
$git checkout -b dev
查看分支:
$git branch
切换master分支:
$git checkout master
合并dev分支:
$git merge dev
删除dev分支:
$git branch -d dev
强制删除dev分支:
$git branch -D dev
18.解决冲突
假设你和别人同时修改了xxx文件
$git status 可以查看冲突,然后进入文件进行手动修改,修改后,一定要将文件再次add和提交
$git add xxx 和 $git commit -m 'xxx'
19.查看分支合并
$git log --graph
20.当你在工作的时候,突然插入了另一个工作,如修改bug,并且要求立即修改,你可以保存工作空间然后切换分支进行bug'修改
$git stash (存储工作现场 )
切换分支进行修改bug
回到原来分支
$git stash list (查看工作现场 )
$git stash pop(恢复工作现场) 等同于 $git stash apply (获取工作现场) + $git stash drop (删除工作现场)
查看工作现场时,可以看到对应的工作现场序号,可根据对应序号恢复工作现场
$git stash apply stash@{序号}
21.查看远程仓库信息
$git remote
22.查看远程仓库详细信息
$git remote -v
23.git pull 报错 no tracking information时,说明本地分支和远程分支没有创建连接关系,用以下命令创建关系
$git branch --set-upstream-to 分支名称 origin/远程分支名称
24.标签(eg:v1.1.1)
创建标签
$git tag 标签
查看标签
$git tag
创建以前修改的标签
$git log (获取修改的commitId)
$git tag 标签 xxx(commitId)
创建带有说明的标签
$git tag -a 标签 -m 'xx' xxx(commitId)
查看标签说明
$git show 标签
删除标签
$git tag -d 标签
推送某个标签到远程
$git push origin 标签
推送所有标签到远程
$git push origin --tags
删除远程标签
$git tag -d 标签
$git push origin :refs/tags/标签
25.搭建git服务器
1)安装git
$sudo apt-get install git
2)创建git用户
$sudo adduser git
3)创建证书登录
把自己的id_rsa.pub导入/home/git/.ssh/authorized_keys文件里
4)初始化Git仓库
$sudo git init --bare xxx.git (bare表明当前git仓库只用于存放,没有.git文件,用户无法再次进行git操作)
5)禁用shell操作
编辑/etc/passwd
git:x:1001:1001:,,,:/home/git:/bin/bash
修改为
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell