加入收藏 | 设为首页 | 会员中心 | 我要投稿 厦门网 (https://www.xiamenwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

大牛总结的 Git 使用技巧,写得太好了

发布时间:2019-09-29 23:47:32 所属栏目:移动互联 来源:儒雅程序员
导读:本文是参考廖雪峰老师的Git资料再加上我自己对Git的理解,记录我的Git学习历程,作下此文是为以后学习,工作,开发中如果遇到问题可以回过头来参考参考。因为水平有限,难免会有出错的地方,欢迎指正。 Git是什么 官方话:Git是一个免费的开源分布式版本控

多人协作

  • git remote 查看远程库的信息,会显示origin,远程仓库默认名称为origin
  • git remote -v显示更详细的信息
  • git push -u origin master推送master分支到origin远程仓库。
  • git push -u origin other 推送other到origin远程仓库。

抓取分支

大牛总结的 Git 使用技巧,写得太好了

产生上图的冲突时,

  • git pull 把最新的提交从远程仓库中抓取下来,在本地合并,解决冲突。在进行git pull
  • 如果git pull 也失败了,还要指定分支之间的链接,这一步Git会提醒你怎么做。然后再git pull。

廖雪峰老师的总结:多人协作的工作模式通常是这样:

  • 首先,可以试图用git push origin
  • 推送自己的修改;
  • 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  • 如果合并有冲突,则解决冲突,并在本地提交;
  • 没有冲突或者解决掉冲突后,再用git push origin
  • 推送就能成功!
  • 如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin/。

Rebase

git rebase 把分叉的提交历史“整理”成一条直线,看上去更直观.缺点是本地的分叉提交已经被修改过了。

最后在进行git push -u origin master

rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

标签管理

比如一个APP要上线,通常在版本库中打一个标签(tag),这样,就确定了打标签的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。

Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针。

tag其实就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。比如tag v2.1就是把历史上的一个版本的东西叫做v2.1

创建标签

步骤:

  • git branch查看当前分支,git checkout master切换到master分支。
  • git tag <name> 打标签,默认为HEAD。比如git tag v1.0
  • 默认标签是打在最新提交的commit上的。如果想要打标签在以前的commit上,要git log找到历史提交的commit id.
  • 如果一个commt id是du2n2d9,执行git tag v1.0 du2n2d9就把这个版本打上了v1.0的标签了。
  • git tag 查看所有标签,可以知道历史版本的tag
  • 标签不是按时间顺序列出,而是按字母排序的。
  • git show <tagname> 查看标签信息。
  • git tag -a <标签名> -m "<说明>",创建带说明的标签。-a指定标签名,-m指定说明文字。用show可以查看说明。

操作标签

  • git tag -d v1.0 删除标签。因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。
  • git push origin <tagname> 推送某个标签到远程
  • git push origin --tags 一次性推送全部尚未推送到远程的本地标签
  • 如果标签推送到远程。git tag -d v1.0 先删除本地标签v1.0。git push origin :refs/tags/v1.0删除远程标签v1.0

自定义Git

  • git config --global color.ui true让Git显示颜色,会让命令输出看起来更醒目
  • 忽略特殊文件 创建一个.gitignore文件,把需要忽略的文件名填进去。Git就会自动忽略这些文件。我也在学习中遇到过这样的问题,比如node_modules文件就可以忽略。

忽略文件原则:忽略操作系统自动生成的文件,比如缩略图等;忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

  • 强制提交已忽略的的文件。git add -f <file>
  • git check-ignore -v <file>检查为什么Git会忽略该文件。
  • 给Git命令配别名,这个有点骚,就是你以后想输入git rebase时,你给它一个“外号”,就叫它git nb。以后你可以通过git nb来代替git rebase。

常用Git命令总结

  • git config --global user.name "你的名字" 让你全部的Git仓库绑定你的名字
  • git config --global user.email "你的邮箱" 让你全部的Git仓库绑定你的邮箱
  • git init 初始化你的仓库
  • git add . 把工作区的文件全部提交到暂存区
  • git add ./<file>/ 把工作区的<file>文件提交到暂存区
  • git commit -m "xxx" 把暂存区的所有文件提交到仓库区,暂存区空空荡荡
  • git remote add origin https://github.com/name/name_cangku.git 把本地仓库与远程仓库连接起来
  • git push -u origin master 把仓库区的主分支master提交到远程仓库里
  • git push -u origin <其他分支> 把其他分支提交到远程仓库
  • git status查看当前仓库的状态
  • git diff 查看文件修改的具体内容
  • git log 显示从最近到最远的提交历史
  • git clone + 仓库地址下载克隆文件
  • git reset --hard + 版本号 回溯版本,版本号在commit的时候与master跟随在一起
  • git reflog 显示命令历史
  • git checkout -- <file> 撤销命令,用版本库里的文件替换掉工作区的文件。我觉得就像是Git世界的ctrl + z
  • git rm 删除版本库的文件
  • git branch 查看当前所有分支
  • git branch <分支名字> 创建分支
  • git checkout <分支名字> 切换到分支
  • git merge <分支名字> 合并分支
  • git branch -d <分支名字> 删除分支,有可能会删除失败,因为Git会保护没有被合并的分支
  • git branch -D + <分支名字> 强行删除,丢弃没被合并的分支
  • git log --graph 查看分支合并图
  • git merge --no-ff <分支名字> 合并分支的时候禁用Fast forward模式,因为这个模式会丢失分支历史信息
  • git stash 当有其他任务插进来时,把当前工作现场“存储”起来,以后恢复后继续工作
  • git stash list 查看你刚刚“存放”起来的工作去哪里了
  • git stash apply 恢复却不删除stash内容
  • git stash drop 删除stash内容
  • git stash pop 恢复的同时把stash内容也删了
  • git remote 查看远程库的信息,会显示origin,远程仓库默认名称为origin
  • git remote -v 显示更详细的信息
  • git pull 把最新的提交从远程仓库中抓取下来,在本地合并,和git push相反
  • git rebase 把分叉的提交历史“整理”成一条直线,看上去更直观
  • git tag 查看所有标签,可以知道历史版本的tag
  • git tag <name> 打标签,默认为HEAD。比如git tag v1.0
  • git tag <tagName> <版本号> 把版本号打上标签,版本号就是commit时,跟在旁边的一串字母数字
  • git show <tagName> 查看标签信息
  • git tag -a <tagName> -m "<说明>" 创建带说明的标签。-a指定标签名,-m指定说明文字
  • git tag -d <tagName> 删除标签
  • git push origin <tagname> 推送某个标签到远程
  • git push origin --tags 一次性推送全部尚未推送到远程的本地标签
  • git push origin :refs/tags/<tagname> 删除远程标签<tagname>
  • git config --global color.ui true 让Git显示颜色,会让命令输出看起来更醒目
  • git add -f <file> 强制提交已忽略的的文件
  • git check-ignore -v <file> 检查为什么Git会忽略该文件

(编辑:厦门网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读