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 中删除后 还是会和其他文件,新建文件一起要加入, 暂存区,但是文件显示成灰色,直接提交更新到远程后,远程仓库也就删除了
原文地址:https://www.cnblogs.com/kgwei520blog/p/13692279.html