git的两大特点
- 版本控制:可以解决多人同时开发的代码问题,也可以解决找回历史代码的问题。
- 分布式
Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。首先找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。可以自己搭建这台服务器,也可以使用GitHub网站。
- 工作区与暂存区的区别
工作区:就是你在电脑上看到的目录,比如目录下mygit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。
版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。
基本操作
说明 |
命令 |
初始化仓库 |
git init |
创建版本记录 |
git add |
|
git commit -m "版本说明信息" |
查看有哪些未被提交到版本库下 |
git status |
查看版本记录与序列号 |
git log |
回退到上一个版本(一个^表示前一个版本) |
git reset --hard HEAD^ |
|
git reset --hard 版本序列号 |
查看操作记录 |
git reflog |
对比文件不同 |
git diff HEAD -- 文件 |
对比两个版本的某个文件不同 |
git diff HEAD HEAD^ -- 文件 |
分支
master:用户保存发布的项目代码。v1.0,v2.0
dve:保存开发过程中的代码
说明 |
命令 |
创建分支 |
git branch 分支名称 |
切换分支 |
git checkout 分支名称 |
创建并切换分支 |
git checkout -b 分支名称 |
查看全部提交记录 |
git log --pretty=oneline |
合并分支到当前分支 |
git merge 分支名称 |
删除分支 |
git branch -d 分支名称 |
禁止快速合并 |
git merge --no-ff -m '提交的信息' 合并的分支名称 |
当临时有需求的情况下,暂时放下手头工作快速切换新需求
相当于弄了个快照 |
git stash |
查看快照 |
git stash list |
恢复快照 |
git stash pop |
冲突
Git用<<<<<<<,=======,>>>>>>>
标记出不同分支的内容
其中<<<HEAD
是指主分支修改的内容,>>>>>fenzhi1
是指fenzhi1上修改的内容,我们可以修改下如下后保存:手动解决冲突,并提交
远程操控
1 2 3 4 5 6 7 8 9
| 添加ssh账户: 输入git log查看邮箱和名字 vi .gitconfig 输入邮箱如图
退回仓库目录输入ssh-keygen -t rsa -C '你的邮箱' 查看ssh:在家目录.ssh/下(win系统就是C盘用户.ssh下 id_rsa是你电脑的私钥 id_rsa.pub是你的ssh 拿着ssh公匙去生成(设置→安全设置→SSH公匙)
|
说明 |
命令 |
git全局设置: |
git config --global user.name "你的名字" |
|
git config --global user.email "你的邮箱" |
推送代码,一般都是创建一个分支保存完后(app、commit)再推送) |
git push origin 分支名称 |
克隆仓库 |
git clone 仓库地址 |
如果克隆失败,尝试输入以下两条代码 |
eval "$(ssh-agent -s)" |
|
ssh-add |
忽略远程版本与本地版本差异,强行pull下来 |
git pull origin master --allow-unrelated-histories |
跟踪远程(可以直接git pull,不用打origin smart |
git branch --set-upstream-to=origin/远程的分支 本地的分支 |
推送到远程的初始仓库 |
git remote add origin 远程仓库的地址 |
尾巴
更加详细的链接:
码云帮助中心:https://gitee.com/help/categories/43
git大全:https://gitee.com/all-about-git
菜鸟教程:https://www.runoob.com/git/git-tutorial.html
git命令学习demo:https://oschina.gitee.io/learn-git-branching/?demo