美文网首页
git的基本使用

git的基本使用

作者: 探索1者 | 来源:发表于2018-12-15 18:24 被阅读0次

    git 的使用

    代码协同管理工具

    1. 防止代码丢失,做代码备份
    2. 做代码的版本管理,创建多个版本或者节点,在多版本之间切换
    3. 可以将代码在多人之间简单的传输共享
    4. 可以方便多人协同开发,开辟各自分支和分支管理

    什么是git
    git是一个开源的分布式版本控制系统,可以用于高效的管理大小项目。

    分布式 : 每个节点关系平等,都保存完整代码,节点之间相互推
    送或者下载代码。工作方式多样

    集中式 : 有明确的中央服务器统一管理代码,每个节点将代码上
    传中央服务器或者从中央服务器下载。逻辑简单

    git特点

    • git可以管理各种文件,特别是代码项目,多在*nix系统中使用
    • 是开源的系统,是唯一可以操作github的管理工具
    • git是分布式管理,不同于集中式,这也是和svn最大的差别
    • git 可以脱网操作,传输速度更快
    • git的安全性很强,有全球唯一的commit版本号
    • git的分支管理很强大,可以方便多人协同工作

    git 基本配置

    git安装: sudo apt-get install git
    git config
    配置级别

    1. 系统中所有的用户均使用的配置
      命令 : git config --system
      配置文件 : /etc/gitconfig

    e.g. 配置git用户
    sudo git config --system user.name Tedu

    1. 当前用户的所有项目均使用的配置
      命令: git config --global
      配置文件 : ~/.gitconfig

    e.g. 配置用户邮箱
    git config --global user.email tarena@tedu.cn

    1. 只在当前项目中使用的配置
      命令: git config (命令要在git项目文件夹中执行)
      配置文件: project/.git/config

    e.g. 配置编译器
    git config core.editor vscode

    1. 查看当前配置
      git config --list
    git 基本概念

    工作区 : 通过自己的主机操作的git目录
    暂存区 : 用来记录你工作的行为,作为暂时保存
    本地仓库 : 本地用来备份同步工作区内容的区域
    远程仓库 : 其他主机的git仓库

    git的基本操作命令

    初始化仓库:git init
    注意:初始化仓库后产生.git目录为git的管理目录,初始化仓库的
    目录中的内容即可使用git管理

    查看工作分支状态:git status
    默认工作分支为master,可以通过创建新的分支切换

    文件提交到暂存区:git add [file]

    • 可以一次提交多个内容,中间用空格隔开
    • 提交的内容可以使文件也可以是目录
    • 如果想将当前目录下所有内容都提交也可以使用 * 表示

    删除暂存区的记录
    git rm --cached [file] (如果是目录加 -r)
    将暂存区记录的修改内容同步到本地仓库
    git commit -m "some message"

    • -m 为添加的附加信息
    • 当工作区和本地仓库内容一致是git status提示工作区干净
      查看提交日志
      git log
      一行显示git log --pretty=oneline

    工作区操作
    查看工作区文件和本地仓库的差异
    git diff [file]
    放弃工作区文件修改(撤销)
    git checkout -- [file]
    恢复本地仓库文件到工作区
    git checkout [file]

    文件的移动和删除
    删除工作区文件并提交到暂存记录
    git rm [file]
    移动工作区文件并提交到暂存记录
    git mv file dir
    rm mv 的用法和shell命令rm mv相同,操作后直接commit同步
    到本地仓库

    版本控制命令

    回到之前版本
    git reset --hard HEAD^
    HEAD 后几个^表示回到之前的几个版本
    通过commit_id回到指定的版本
    git reset --hard commit_id(前七位)
    查看操作日志
    git reflog
    获取到操作记录后可以根据commit_id去往较新的版本

    标签管理

    什么是标签 : 即在当前工作位置添加快照,保存项目的版本信息
    ,一般用于项目版本的迭代
    创建标签
    git tag v1.0
    默认会在最新的commit_id处打标签
    查看标签
    git tag 查看所有标签
    git show V2.0 查看某个标签的具体信息
    在某个指定commig_id处打标签
    git tag v0.9 [commit_id]
    回到某个标签的版本
    git reset --hard v0.9
    删除标签
    git tag -d v2.0

    保存临时工作区

    创建临时工作区

    git stash
    将工作区修改内容暂时封存,恢复到最近一个“干净”状态
    查看保存的工作区
    git stash list
    应用某个工作区
    git stash apply stash@{1}
    新的工作区总是为stash@{0},老的工作区会向下排列
    应用上一个工作区,并删除他
    git stash pop
    删除工作区
    git stash drop stash@{0} 删除某一个
    git stash clear 删除所有


    分支管理

    什么是分支?
    分支即每个人在获取原有分支(master)代码的基础上,作为自己的工作环境,
    单独开发,不会影响其他分支操作,开发完成后再统一合并到主线分支
    好处: 安全,不影响其他人工作,自己控制进度
    缺点: 会有冲突,降低耦合度可以有效地减少冲突

    查看当前分支 git branch 前面带 * 的表示当前正在工作的分支

    创建分支 git branch [branch_name]

    注意: 创建分支之前尽量保证原分支是干净的
    切换工作分支 git checkout [branch_name]

    创建并切换到新分支下 git checkout -b <branch_name>

    合并分支 git merge [branch_name]
    默认是 fast-forward 快速提交,没有提交信息
    我们可以禁用这种模式,使用以下命令

    git merge --no-ff -m '提交信息' 分支名
    

    删除分支 git branch -d [branch_name]

    强制删除未合并的分支 git branch -D [branch_name]

    解决合并冲突

    冲突的发生: 两个分支修改了同一个文件并有了各自的提交
    请看示例:

    1.创建一个新分支 dev
    > git checkout -b dev
    2.修改 code.txt 内容,并提交
    > git add code.txt
    > git commit -m '新增了内容在code.txt中'
    3.切换回 master 分支
    > git checkout master
    4.在master的 code.txt 添加一段内容并进行提交
    > vi code.txt
    5.现在,master分支和dev分支各自都分别有了新的提交
    这样在合并的时候就会冲突
    > git merge dev
    6.解决冲突
    - 打开冲突的文件,手动删除 <<< master 和 >>> dev 
    - 然后保存, 再次提交
    

    远程仓库

    在远程主机上的仓库,git是分布式的,每一台主机上的git结构
    基本相同,只是把其他主机上的git仓库叫做远程仓库

    创建共享仓库:

    1.创建目录 mkdir gitrepo
    2.设置仓库文件夹的属主
    chown 用户: 用户组 gitrepo
    chown tarena: tarena gitrepo
    3.创建共享仓库
    git init --bare aid.git
    4.设置git项目文件夹数组
    chown -R tarena: tarena aid.git

    添加远程仓库
    git remote add origin[远程主机名]
    tarena@127.0.0.1:/home/tarena/gitrepo/aid.git

    向远程主机推送分支
    git push -u origin master

    从远程主机获取项目
    git clone 链接地址

    将代码同步到远程主机
    git push

    将远程仓库内容拉取到本地
    git pull
    git fetch (获取远程分支到本地,但是暂时不合并)与pull有差别,fetch没有合并那一步

    删除已有的远程主机
    git remote rm origin

    github(远程仓库)
    开源的项目社区网站,提供丰富的开源项目,也为用户提供项目管理服务

    git是github唯一指定的代码管理工具
    网址: https://www.github.com

    创建新的仓库: 右上角+ new repository --> 填写信息

    操作github:
    1.git remote 连接远程仓库
    2.通过github上传代码
    3.github就是一个远程仓库

    相关文章

      网友评论

          本文标题:git的基本使用

          本文链接:https://www.haomeiwen.com/subject/obpkhqtx.html