github 实用命令

GIT 学习

写在前面

别骂了,不要问我为什么现在才学git命令。没有截图,写得比较简短,主要是希望自己能一看就回忆起来。

一、初始化

git init
echo "xxxxxxxxx" >> README.md
git add README.md // 添加README文件
  • 官方的代码:

用cmd 创建新的仓库:

echo "# ft2" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/xxxxx/ft2.git
git push -u origin main

使用已有仓库创建新的仓库:

git remote add origin https://github.com/xxxxx/ft2.git
git branch -M main
git push -u origin main

二、提交文件

git add * // 从工作区添加本地所有文件到暂存区
git commit -m "提交新文件" // 提交到暂存区,-m为注释
git remote add origin https://github.com/xxxxx/Ft2.git // 添加远程仓库,名为origin
git push origin master // 上传新文件至master分支

三、创建、删除、切换和合并分支

git checkout -b branchft2_1 // 创建名为 branchft2_1 的新分支
git checkout -d branchft2_1 // 删除
git add *
git commit -m "add 333.h"
git push origin branchft2_1 // 将改动push至新分支
git checkout master // 切换当前分支为 master
git diff master branchft2_1 // 查看两个分支的差异

git checkout master
git merge branchft2_1 // 合并分支
git push origin master // 提交

如果 merge 时报错

fatal: refusing to merge unrelated histories

,可以用:

git merge branchft2_1 --allow-unrelated-histories

四、拉取分支

git pull origin master // 将本地文件更改为master分支的文件

其实 git pull 的效果和 git fetch + git merge 类似,都能够更新本地文件,但并不建议直接使用 git pull :

请看大佬的解答

不要用git pull,用git fetch和git merge代替它。
git pull的问题是它把过程的细节都隐藏了起来,以至于你不用去了解git中各种类型分支的区别和使用方法。当然,多数时候这是没问题的,但一旦代码有问题,你很难找到出错的地方。看起来git pull的用法会使你吃惊,简单看一下git的使用文档应该就能说服你。
将下载(fetch)和合并(merge)放到一个命令里的另外一个弊端是,你的本地工作目录在未经确认的情况下就会被远程分支更新。当然,除非你关闭所有的安全选项,否则git pull在你本地工作目录还不至于造成不可挽回的损失,但很多时候我们宁愿做的慢一些,也不愿意返工重来。

个人认为,将 pull 分为两个操作的好处是,先 fetch,然后再 merge,就可以清楚看到本地改动和分支(即两个分支)的冲突,当代码出现问题时可以很快找到。而 pull 则是暴力地从远程仓库获取最新版本来替换本地文件,并且并不会显示替换的细节。

五、标签

git log // 查看历史版本
git tag 1.0.0 f2ce402526d6d0 // 选定版本,并设定标签为1.0.0,哈希值(commitID)可以不用复制全
git push origin main --tags // 设置标签不需要经过commit操作

六、本地文件更新

当我们修改了本地文件,想要获取远程仓库 test1 分支中的文件来更新本地文件。但同一项目其他成员已修改代码,如果想要合并就会报错:

> git merge origin/test1
error: Your local changes to the following files would be overwritten by merge:
        twitter_spider/twitter_process_keyword.py
Please commit your changes or stash them before you merge.
Aborting

这时我们可以选择保留或者放弃本地更改:

  • 保留本地更改
git stash #封存修改
git fetch origin test1
git merge origin/test1
git stash pop #把修改还原
  • 放弃本地更改
// 单个文件
git checkout -- 111.py // 使用HEAD中最新内容替换掉工作目录中的文件
// 所有文件
git fetch origin test1
git reset --hard origin/test1 // 以上两句的作用是丢弃本地更改,将本地文件回退版本

感谢

B站BV号:BV1Mp4y1q75m

详解git pull和git fetch的区别

error: Your local changes to the following files would be overwritten by merge 解决方案

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TurkeyMan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值