使用Git
使用Git

使用Git

背景知识

  • 工作区:git add之前的文件,未添加到git
  • 暂存区:git add之后的文件
  • 版本库:git commit之后的文件

本地操作

  • 安装git – 安装就下载安装包安装就行了,一路回车
  • git config –global user.name “姓名”   设置用户名
    • –global 参数表示这台机器上的所有git仓库都使用这个配置
  • git config –global user.email “邮箱”    设置邮箱
  • git bash 切换到本机项目文件夹执行 git init    git初始化项目
  • 查看项目目录下的所有文件 ls -ah    文件和文件夹都会显示,包括隐藏文件
  • git status    查看当前文件状态
  • git add -A    将所有文件提交到暂存区
  • git commit -m ‘项目首次添加到git’    将文件保存提交到版本库(本地)
  • git diff 文件名    文件改动后对比文件
    • q 键退出
    • git diff HEAD — 文件名   查看工作区和版本库里面最新版的区别
  • git log   显示从近到远的提交日志
    • git log –pretty=oneline    可以显示简略log信息
    • git log -1    显示最后一次提交信息
  • git reset –hard HEAD^    文件回退到上个版本
    • git reset –hard 3bb6a    回退到指定版本
  • git reflog    查看命令历史,以便于版本回退后恢复到新版
  • git checkout — 文件名    撤销更改
  • git rm 文件名    删除版本库文件
  • cat 文件名   查看文件内容
  • rm 文件名    删除文件

远程操作 GitHub

  • 创建SSH Key
    • 在本机用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。
      • 如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key: ssh-keygen -t rsa -C “邮箱”    一路回车使用默认值即可。可以在用户主目录里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人
  • 登陆GitHub,打开“Settings”,“SSH Keys”页面
    • 新建 SSH key
      • title    可任意设置
      • key    粘贴 id_rsa.pub 文件的内容
  • 创建一个新的仓库
    • 可以从这个新仓库克隆到本地
      • git clone git@github.com:用户名/仓库名.git
      • git clone “https://github.com/用户名/仓库名.git”
      • Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https
    • 也可以将本地仓库与之关联
      • git remote add origin git@github.com:用户名/仓库名.git
      • 添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库
    • 查看关联的远程仓库
      • git remote -v
  • 把本地库的所有内容推送到远程库上
    • git push -u origin master
      • 把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
    • 从现在起,只要本地作了提交,就可以通过命令
      • git push origin master
        • 把本地master分支的最新修改推送至GitHub
      • git push [remote-name] [branch-name]
    • 查看远程仓库信息(远程分支啥的)
      • git remote show origin
    • SSH 警告
      • 当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告
image.png
这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可

分支管理

  • git branch    查看当前分支
  • git checkout master    切换到master分支
  • git checkout -b branch-name    创建并切换到分支
    • git checkout命令加上-b参数表示创建并切换,相当于以下两条命令
      • git branch branch-name    创建分支
      • git checkout branch-name    切换到分支
  • git branch -d branch-name    删除分支
  • 分支合并
    • git checkout master    切换到master分支
    • git merge dev    将dev分支与master分支合并
  • 查看远程库信息,使用 git remote -v
  • 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
  • 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致
  • 建立本地分支和远程分支的关联
    • git branch –set-upstream-to=origin/remote_branch  your_branch
  • 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

标签管理

  • 发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。
  • Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针。(跟分支很像,但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。
image.png
  • git branch    查看当前分支
  • git checkout master    切换到master分支
  • git tag v1.0   创建标签
  • git tag    查看所有标签
  • git tag -d v0.1    删除标签
    • 因为创建的标签都存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除
  • git push origin v1.0    推送某个标签到远程
    • git push origin –tags
    • 如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除
      • git tag -d v0.9
    • 然后,从远程删除。删除命令也是push,但是格式如下
      • git push origin :refs/tags/v0.9

自定义git

  • git config –global color.ui true    让git显示颜色
    • Git会适当地显示不同的颜色,比如git status命令
  • 忽略特殊文件
    • 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。
    • 不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore
    • 忽略文件的原则是:
      • 忽略操作系统自动生成的文件,比如缩略图等
      • 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件
      • 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件
    • 修改了 .gitignore 文件后将它提交到git
  • 配置别名
    • 如果敲git st就表示git status那就简单多了,当然这种偷懒的办法是值得推荐的。
    • 只需要敲一行命令,告诉Git,以后st就表示status
      • git config –global alias.st status
        • 这样 git stgit status 就会有一样的效果
  • 配置文件
    • 配置Git的时候,加上--global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用
    • 每个仓库的Git配置文件都放在.git/config文件中
      • 别名就在[alias]后面,要删除别名,直接把对应的行删掉即可

参考链接:

2条评论

回复 james 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注