git

Git 终端使用

前言

此次记录目的为记录第一次通过终端完成 git 仓库的拉取、推送等操作,以及一些可能常出现的错误

git config 配置

安装好 git 后可通过 git bash 打开,也可直接通过 shell 进行操作

  1. 用户名和邮箱配置
    1
    2
    git config --global user.name "name"
    git config --global user.email "example@email.com"
  2. 代理的配置、取消与查看
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 配置
    git config --global http.proxy http://127.0.0.1:33210
    git config --global https.proxy http://127.0.0.1:33210
    # 取消
    git config --global --unset http.proxy
    git config --global --unset https.proxy
    # 查看
    git config --global --get http.proxy
    git config --global --get https.proxy

搭建本地仓库,并链接自己的远程仓库

  1. 在本地新建一个文件夹,通过终端进入
    1
    2
    # 创建仓库
    git init
  2. 添加文件或文件夹到暂存区
    1
    2
    3
    git add .

    git add [文件名]
  3. 提交到本地仓库
    1
    2
    3
    git commit -m "first"

    git commit -am "second"
  4. github 创建远程仓库
    建立完成后在 code 下找到该仓库链接并复制,而后在终端操作
    1
    git remote add origin "地址"
  5. ssh 公钥设置与检查
    1
    ssh-keygen -t rsa -C "邮箱名"
    然后进入保存 ssh 的文件,打开 id_rsa.pub,复制而后在 github 个人设置中添加
    1
    2
    # 检查
    ssh -T git@github.com
    出现 successfully就成功
  6. 推送
    1
    git push -u origin master
  7. 拉取
    1
    2
    3
    4
    5
    git pull origin master

    git fetch origin master

    git merge origin master

问题

  1. 拉取别人仓库文件到本地时,会出现 origin 已配置,原因是一个远程仓库已经被命名为 origin ,不能再次指向另一个仓库

    1
    2
    3
    4
    #  删除已有的仓库
    git remote rm origin
    #添加
    git remote add origin "仓库地址"
    1
    2
    # 换名字
    git remote add origin2 "仓库地址"
  2. git push 推送问题

    • ! [rejected] master -> master (non-fast-forward)
      远程库已有代码,出于安全不允许直接推送,先将远程库的文件 pull 过来或者 fetch(前者会直接让本地库被覆盖)
    1
    2
    3
    4
    5
    git pull origin master

    # 使用 fetch 和 merge
    git fetch origin master
    git merge origin master

    此操作可能出现
    refusing to merge unrelated histories

    1
    2
    # 添加后缀
    git pull origin master --allow-unrelated-histories

    而后提交当前变化,即再 add 和 commit 一次
    最后 merge 后即可提交

    也可以 git push -f 强推,不建议

    • ! [rejected] master -> master (fetch first)
      远程库和本地库版本不一致,解决方案与上述类似,拉取远程库后合并再推送
    • 部分未推送
      常见原因有:本地仓库为空(未 add );add 后未 commit ; git init 错误
  3. return error 403
    此问题出现于 git push 不加参数默认推送到主分支时,原因是需要令牌(鉴权失败也同理)


    记得复制令牌后保存到别处,否则会刷新掉