文章目录
什么是git?
用于分布式的版本控制文件
为什么要版本控制?
方便保留之前的版本,以便于回滚和修改。
基本原理
- 进入要管理的文件夹里面(创建一个新的文件夹mygit)
- git init 初始化,使git来控制我们当前的文件夹
- git status 检测当前目录下文件的状态
- 三种颜色变化
- 红色:新增的问价(修改了里面的文件)使用 git add 文件名(git add .)可以管理文件
- 绿色:git已近管理的文件 使用git commit -m '要描述的信息’来生成新的版本
- 个人信息配置(第一次使用)
git config --global user.email "邮箱地址"
git config --global user.name "用户名"
- 查看版本记录
git log
git relog
git log --graph #以图的形式展示
git log --graph --pretty=format: "%h %s" #只显示版本号和版本名
git三大区域
工作区
自动检测文件是否新增or修改
暂存区
工作区处理完之后的文件通过使用 git add 添加至缓存区
版本库
在工作区里面确定更新版本的文件,使用git commit 生成新的版本
回滚
使用add和commit多次更新版本之后
回滚到之前的版本
git log
git reset --hard (commit后的,用log查看)版本号
如果后悔回到原来的版本
回滚到之后的新版本
git relog
git reset --hard (commit后的,用relog查看)版本号
三大区的命令转换
git checkout -- 文件名 可以把修改的文件在工作区打回原形
git reset Head 文件名 可以把缓存区退回来工作区的修改状态
分支
- 查看分支
git branch
- 基于当前创建一个新的分支
git branch 分支名
- 跳转到某个分支
git checkout dev(分支名)
git checkout -b new #在此分支的基础上,再分裂一个分支
- 主线合并某个分支
git merge (分支名)
注意合并分支的时候,切换分支
- 删掉分支
git branch -d 分支名
如果合并的时候,两个分支有相同的文件但是内容不一样,就会发生冲突
手动更改内容,解决冲突
远端存储
- 注册github(等仓库)账号
- 创建仓库
- 给远程仓库取别名
git remote add 别名 <仓库网站>
- 将本地某分支上传仓库
git push -u <仓库名字> master[分支名]
- 将仓库的文件下载下来,第一次
git clone <仓库网站>
- 将仓库的新代码更新一下
git pull origin[仓库名] dev[分支名]
- 使用pull是直接将仓库里面的文件合并到工作区
- 仓库转版本区,版本区到工作区
git fetch origin dev #先到版本区
git merge origin/dev #版本区到工作区
变基(rebase)
应用场景之一:压缩中间版本
压缩当前版本到之前的某个版本
git rebase -i [版本号] #从目前版本一直压缩到版本号那个版本
git rebase -i HEAD~3 #压缩三个版本
应用场景之二:将分支合并
在dev分支上
git rebase master #合并到主分支
git checkout master
git merge dev
应用场景之三:避免分支产生
在接收仓库文件发生冲突时:
git fetch origin dev #先拿到本地
git rebase origin/dev #进行合并,不产生分支合并
- 解决冲突之后
git rebase --continue #继续完成合并
快速解决冲突
- 安装beyond compare
- 在git中设置
git config --local merge.tool bc4 #给这个比较文件的软件取别名
git config --local mergetool.path '"C:\Program Files\Beyond Compare 4\BCompare.exe"' #软件的地址
git config --local mergetool.keepBackup false #合并之后不保留原文件
- 应用beyond compare解决冲突
git mergetool
多人协同开发
- 在仓库创建项目,邀请人员
- tag标签管理
在mster分支打tag
git tag -a v2 -m “第二个版本”
- 运维人员调试
git clone -b v2 地址
给开源代码做贡献
- fork源代码
将别人的代码拷贝到自己的远程仓库. - 在自己的仓库修改代码
- 给源代码作者提交修复代码的申请(pull request)
配置文件
项目配置文件
git config --loal user.name 'WL725' #这种某个项目的配置
全局配置
git config --global user.name 'WL725' #这种所有项目的配置
系统配置
git config --system user.name 'WL725' #在root权限下配置整个系统
git免密码登陆
URL体现
原网址:https://github.com/WL725/wl.github.io.git
新网站:https://用户名:密码@github.com/WL725/wl.github.io.git
在网站中携带账号密码
SSH实现(企业用的多)
1:生成公钥和私钥(/.ssh目录下)id_rsa.pub 公钥 id_rsa 私钥
ssh-keygen
2:拷贝公钥的内容,并在github中设置添加
3:在git本地中配置ssh地址
git remote add ssh地址
4:以后使用
git push origin master不需要密码
git自动管理凭证
输入一次后,电脑自动记录账号密码
git忽略文件
让git不再管理当前目录下的某些文件。
*.h
!a.h
files/
*.py[c|d|a]
任务管理相关
- issues 在git中发布文档以及任务
- wiki ,在git中项目的文档说明