专栏首页Nodejs技术栈Git常用命令及日常问题集锦

Git常用命令及日常问题集锦

Git 当下最流行的版本管理工具,结合自己工作中的实际应用做了以下梳理,如果您在使用中还有其它问题欢迎评论留言

快速导航

  • 基础命令
  • 分支操作
  • 修改远程仓库地址
  • 远程分支获取最新的版本到本地
  • 拉取远程仓库指定分支到本地
  • 工具类
  • 常见问题

基础命令

  • git init 初始化本地仓库
  • git add-A. 来一次添加所有改变的文件
  • git add-A 表示添加所有内容
  • git add. 表示添加新文件和编辑过的文件不包括删除的文件
  • git add-u 表示添加编辑或者删除的文件,不包括新添加的文件
  • git commit-m'版本信息' 提交的版本信息描述
  • git status 查看状态
  • git push-u origin master 推送到远程仓库看
  • git pull 拉取远程仓库代码到本地
  • git branch-av 查看每个分支的最新提交记录
  • git branch-vv 查看每个分支属于哪个远程仓库
  • git reset--hard a3f40baadd5fea57b1b40f23f9a54a644eebd52e 代码回归到某个提交记录

分支操作

  • 查看本地都有哪些分支 git branch-a
  • 新建分支 git branch dev
  • 查看当前分支 git branch
  • 切换分支 git checkout dev
  • 删除本地分支 git branch-d dev
  • 同步删除远程分支 git push origin:dev

修改远程仓库地址

  • 方法1,先删后加:
    • git remote rm origin 先删除
    • git remote add origin仓库地址 链接到到远程git仓库
  • 方法2,修改命令:
    • git remoteset-url origin仓库地址

远程分支获取最新的版本到本地

  • 执行 git pull命令
  • 如果以上命令还是失败尝试以下步骤:
    1. 首先从远程的origin的master主分支下载最新的版本到origin/master分支上 git fetch origin master
    2. 比较本地的master分支和origin/master分支的差别 git log-p master..origin/master
    3. 进行合并 git merge origin/master

拉取远程仓库指定分支到本地

  • 首先要与origin master建立连接: git remote add origin git@github.com:XXXX/nothing2.git
  • 切换到其中某个子分支: git checkout-b dev origin/dev
  • 可能会报这种错误:
fatal: Cannot update paths and switch to branch 'dev' at the same time.Did you intend to checkout 'origin/dev' which can not be resolved as commit?
  • 原因是你本地并没有dev这个分支,这时你可以用 git branch-a 命令来查看本地是否具有dev分支
  • 我们需要: git fetch origin dev 命令来把远程分支拉到本地
  • 然后使用: git checkout-b dev origin/dev 在本地创建分支dev并切换到该分支
  • 最后使用: git pull origin dev 就可以把某个分支上的内容都拉取到本地了

工具类

  • 代码合并工具 Beyond Compare

http://www.scootersoftware.com/download.php

  • 官方Git文档地址

https://git-scm.com/book/zh/v2

常见问题

Question1

如何解决 failed to push some refs to git

Answer1

  • git pull--rebase origin master 进行代码合并
  • git push-u origin master 即可完成代码上传

Question2

If you wish to set tracking information for this branch you can do so with:git branch --set-upstream-to=origin/<branch> master

Answer2

指定当前当前工作目录工作分支,跟远程仓库分支之间的联系

git branch --set-upstream master origin/master

Question3

获取 git pull 最新代码报以下错误:

fatal: refusing to merge unrelated histories

Answer3

git pull之后加上可选参数 --allow-unrelated-histories 强制合并

git pull origin master --allow-unrelated-histories

Question4

使用钩子 pre-commit,提交代码提示如下错误:

$ git commit -m '.'sh: eslint: command not foundpre-commit:pre-commit: We've failed to pass the specified git pre-commit hooks as the `fix`pre-commit: hook returned an exit code (1). If you're feeling adventurous you canpre-commit: skip the git pre-commit hooks by adding the following flags to your commit:pre-commit:pre-commit:   git commit -n (or --no-verify)pre-commit:pre-commit: This is ill-advised since the commit is broken.pre-commit:

Answer4

  • 打开项目中的 .git/hooks 文件夹,找到 pre-commit.sample 文件,将以下代码替换到文件中,或者, npm install pre-commit--save 也可以,这个命令会自动执行以下操作。
#!/bin/bashTSLINT="$(git rev-parse --show-toplevel)/node_modules/.bin/tslint"for file in $(git diff --cached --name-only | grep -E '\.ts$')do        git show ":$file" | "$TSLINT" "$file"        if [ $? -ne 0 ]; then                exit 1        fidone
  • pre-commit.sample文件名修改为 pre-commit

Question5

.gitignore 规则不生效的解决办法

Answer5

把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未被追踪状态),然后再提交:

git rm -r --cached . 或者 git rm -r README.mdgit add .git commit -m 'update .gitignore'

作者推荐

  • 个人博客:https://www.nodejs.red
  • 慕课:https://imooc.com/u/2667395
  • 公众号:Nodejs技术栈

本文分享自微信公众号 - Nodejs技术栈(NodejsDeveloper)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java面试题汇总---整理版(附答案)

    spring能够很好的和各大框架整合,它通过IOC容器管理了对象的创建和销毁 工厂模式。在使用hiberna,mybatis的时候,不用每次都编写提交的事务的...

    攻城狮的那点事
  • 程序员经常访问的技术网站

    (1).Github 代码托管 GitHub的使用可是程序员在职业生涯中技能必不可少的技能。它可以做Git代码托管平台,很多开源项目都放在Github上,因此...

    honey缘木鱼
  • Spring Boot实现分布式微服务开发实战系列(六)

    上一篇文章讲了Redis缓存的安全防范及Kafka的接入及消息实现,今天接着前面的内容基础说说项目的优化和基础配置,今天要讲的内容主要是Spring Boot项...

    攻城狮的那点事
  • Sourcetree

    会有下面这种提示,点击确定就好了。再次进行拉取或推送时就不需要再输入账号和密码了。

    用户1890628
  • macOS 安装解释性数学视频的动画引擎 Manim

    这篇文章的目的是给出另一个关于如何让 Manim 使用 Python 3.7 在 Mac 上 工作的帐户,仅此而已。我花了几个令人沮丧的夜晚试图让事情发挥作用,...

    iOSDevLog
  • Spring cloud stream【消息分区】

      在上篇文章中我们给大家介绍了Stream的消息分组,可以实现消息的重复消费的问题,但在某些场景下分组还不能满足我们的需求,比如,同时有多条同一个用户的数据,...

    用户4919348
  • 怎么将本地项目放到码云(gitee)上面?图文详解

        2:放git项目所在文件夹目录:D:\workspace01\kgautocode

    凯哥Java
  • disruptor源码分析一之核心组件介绍

    disruptor是LAMX用于交易场景的一个环形队列。按照disruptor的官方wiki中说的,学习disruptor的最好的方式就是与java中的Bloc...

    开发架构二三事
  • 【PHP开发工具】PhpStorm 常用快捷键和配置

    我们知道平时利用git作为项目版本管理控制的时候 1.直接在命令窗口直接使用命令下载,更新,上传等等 2.使用界面化工具进行界面化操作。 现在有了PhpS...

    凯哥Java
  • 怎么通过码云(Gitee.com)创建自己的博客建立主页

    很多开源项目托管平台都支持为托管的项目建立主页,但主页的维护方式都没有码云这么酷。大多数托管平台无非是开放一个FTP或类似服务,用户把制作好的网页或脚本上传了事...

    凯哥Java

扫码关注云+社区

领取腾讯云代金券