• git 基本使用


    ### git 的基本使用

    安装

    • 直接下载 https://git-scm.com/downloads

    • 安装完成后,在开始菜单里找到“Git”->“Git Bash”

    • 安装完成后,还需要最后一步设置,在命令行输入:

      • git config --global user.name "Your Name"
      • git config --global user.email "email@example.com"
    • 查看全局配置

      • git config --list

    因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。你也许会担心,
    如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的。

    注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

    • 选择一个目录文件夹 在这个目录下打开gitBash
    • 通过 git init 命令把这个目录变成git可以管理的仓库

    概念

    • 工作区

      • 就是你在电脑里能看到的目录,git init时的文件夹就是一个工作区
    • 版本库(Repository)

      • 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

        Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

      • git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。

    • 删除文件

      • git rm test.txt
    • 恢复一个文件

      • git checkout -- test.txt
    • 本地库关联到远程库

      • git remote add origin git@github.com:wJiaLiang/vue-cli4.git

      SSH警告 当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告; 这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。

    • 从远程克隆仓库

    分支管理

    每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支

    • git checkout -b dev (创建病切换到dev 分支);

    git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
    git branch dev
    git checkout dev

    • git branch命令会列出所有分支,当前分支前面会标一个*号
    • git merge命令用于合并指定分支到当前分支
    • git branch -d dev (删除dev分支)
    • git switch master (直接切换分支到master)
    • git clone -b dev https://www.abc-tem.git (指定 拉取 dev 分支)
    • 总结:
      • 查看分支:git branch
      • 创建分支:git branch name
      • 切换分支:git checkout name 或者 git switch name
      • 创建+切换分支:git checkout -b name 或者git switch -c name
      • 合并某分支到当前分支:git merge name
      • 删除分支:git branch -d name

    标签管理

    发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。

    Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。

    tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。

    • 创建标签
      • 切换到某个分支下命令:get tag name
      • 如:get tag v1.0.0

    默认标签是打在最新提交的commit上的。有时候,如果忘了打标签,比如,现在已经是周五了,但应该在周一打的标签没有打,怎么办?
    方法是找到历史提交的commit id,然后打上就可以了:

    比方说要对add merge这次提交打标签,它对应的commit id是f52c633,敲入命令:git tag v0.9 f52c633

    • 注意,标签不是按时间顺序列出,而是按字母排序的。可以用git show tagname 查看标签信息:
    • 还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:
      • git tag -a v0.1 -m "version 0.1 released" 1094adb

    标签删除

    • git tag -d v0.1

      因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除

      • 如果要推送某个标签到远程,使用命令git push origin tagname

      • git push origin v1.0

      • 或者,一次性推送全部尚未推送到远程的本地标签:

      • git push origin --tags

      • 如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:

      • git tag -d v0.9

      • 然后,从远程删除。删除命令也是push,但是格式如下:

      • git push origin :refs/tags/v0.9

    本地仓库关联到远程仓库

    • git remote add origin https://github.com/wJiaLiang/vue-cli4.git
    • 如果在使用命令git remote add时报错
    • 这说明本地库已经关联了一个名叫origin的远程库,此时,可以先用git remote -v查看远程库信息:
    • 我们可以删除已有的GitHub远程库: git remote rm origin
    • 关联多个远程库 如: 即关联到gitee 有关联到 gitHub;

    忽略特殊文件

    • 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件

    • 配置规则访问: https://github.com/github/gitignore

    • 忽略文件的原则是:

      • 1 忽略操作系统自动生成的文件,比如缩略图等;
      • 2 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件
      • 3 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
    • 有些时候,你想添加一个文件到Git,但发现添加不了,原因是这个文件被.gitignore忽略了:如:git add App.class

    • 可以用-f强制添加到Git: git add -f App.class

    • 或者你发现,可能是.gitignore写得有问题,需要找出来到底哪个规则写错了,可以用git check-ignore命令检查:

    git check-ignore -v App.class
    .gitignore:3:*.class	App.class
    Git会告诉我们,.gitignore的第3行规则忽略了该文件,于是我们就可以知道应该修订哪个规则。
    

    搭建git服务器

    Source Tree 使用

    Git有很多图形界面工具,这里我们推荐SourceTree,它是由Atlassian开发的免费Git图形界面工具,可以操作任何Git库。
    首先从官网下载SourceTree并安装,然后直接运行SourceTree。

    补充

    • 删除本地文件更新到线上:
    • 在source tree 中删除后 还是会和其他文件,新建文件一起要加入, 暂存区,但是文件显示成灰色,直接提交更新到远程后,远程仓库也就删除了
  • 相关阅读:
    [C++11新特性] weak_ptr和unique_ptr
    [C++11新特性] shared_ptr共享的智能指针
    VS2019 Qt5.15.2 开发环境搭建
    【C++11 新特性】Lambda表达式(三)
    【C++11 新特性】bind(二)
    【C++11 新特性】function(一)
    【IPC 进程间通信】有名管道的简单实现
    【IPC 进程间通信】常用进程间通信方式总结
    Qt 文件常见操作管理类
    【GitHub 开源分享】QML 在线预览工具
  • 原文地址:https://www.cnblogs.com/kgwei520blog/p/13692279.html
Copyright © 2020-2023  润新知