• git实战命令(小技巧篇hp)


    0,新建一个仓库

    创建本地代码

    创建本地git: git init

    创建远程仓库

    本地与远程仓库链接:

      Git add

       Git commit -m

       git remote add origin. 地址

       Git push

    本地新建release分支:git checkout -b

    本地分支推送到远程:git push --set-upstream origin release

    本地查看远程分支:

    git pull

    git branch -r.  48853114

    1,分支

    查看远程分支:git branch -r

    查看本地和远程所有分支:git branch -a

    新建分支:git.  Branch  newdev

    切换分支:git checkout newdev

    新建并切换分支:git. checkout -b newdev

    删除分支:git branch -d   olddev

    拉取远程分支:

    2合并分支到主支

    分支dev合并到主支release:

    git checkout  release;

    git merge dev

    git push

    如果出现changes,可以

    git add .

    Git commit

    git push即可

    3,默认开发流程

    首先默认从远程git clone master内容

    然后切换到release分支,从release分支上新建一个分支

    开发完毕后(本地分支add,commit,push)

    切换并拉取release最新代码

    在release上合并本地分支。

    4,本地落后远程,并修改内容

    快进合并、非快进普通合并、变基合并

    偏离分支:当本地的分支落后于远程分支时,本地分支又自行修改项目文件生成了新的提交

    当前分支偏离分支后,重新pull,有三种策略;需要手动选择对应的策略:

    git config pull.rebase false  # 合并(缺省策略) (表示除非手动添加 —rebase,否则不会做rebase操作)

    git config pull.rebase true   # 变基。   (表示git pull的时候,相当于执行git pull —rebase

    git config pull.ff only       # 仅快进

    此时只要做一下配置即可,默认使用第一种配置

    5,拉取远程某个分支到本地,并切换到该分支

    git checkout -b  本地分支名   origin/远程分支名

    7,获取历史文件

    想要获取前几天某个版本的exchangeList.tsx文件:

    git log查看所有版本信息,复制对应的版本号abe11c7a7eda3c99d4bf32c97f7ffb059

    git  show abe11c7a7eda3c99d4bf32c97f7ffb059:src/pages/author/author.tsx >my_author_new.tsx

    最终导出到本地电脑

    8,将master中的变更保存到不存在的分支dev

    git checkout -b release

    Git checkout -b dev

    Git  add .

    Git commit -m ‘’

    Git push

    9,多人同时merge

    Swap file .MERGE_MSG.swp already exists

    Git-解释“Swap file .MERGE_MSG.swp already exists”的问题_DRPrincess的博客-CSDN博客

    多人操作合并分支到release,可能会报这个错,因为vim(编辑文件)不正常的关闭,会产生这个文件。

    解决办法:

    先终止合并操作:git merge -abort

    然后删除.swp文件:rm .git/.MERGE_MSG.sw*

    重新合并即可

    如果出现无法退出的界面,可以使用:wq!正常关闭vim

    10,不正常的vscode

    当从A切换到B分支时,如果B分支出现新的文件,理论上应该我git pull,但是vscode自动将更新放在changes里。

    场景:在release上,vscode检测到远程的改变,存在三个本地没有的文件,然后切换到分支上,报错(工作区中下列未跟踪的文件将会因为检出操作而被覆盖)

    解决办法:

    回退上一个版本:  git reset --hard HEAD

    然后切换版本: git checkout 版本 -f

    11git merge编辑窗口:请输入一个提交信息以解释此合并的必要性

    输入:wq退出即可

    12,权限不足,无法在仓库对象库 .git/objects 中添加对象

    可能别人提交了一些文件,我默认对这些新文件是没有权限的

    解决办法,给该项目添加权限:sudo chown -R zwj 项目名称

    13.1,不小心在release上开发了

    情况1:(没执行任何命令,或者只执行了git. add)

    直接checkout 目标分支即可

    情况2:

    做了git add . 和git commit -m 操作

    那么建议在release分支执行:git reset --soft HEAD^   (这个命令表示撤销commit,但是保留git add命令)

    然后执行git checkout    目标分支

    然后执行git. Commit -m git push即可

    ⚠️:千万不要执行:git reset --hard HEAD^  (这个命令表示撤销commit和add,那你改的所有代码就消失不见了)

    情况3:

    执行了add,commit,push

    详情参考:https://jingyan.baidu.com/article/f7ff0bfc561b6a6f26bb13a7.html

    13.2,不小心在master上开发了

    这个很奇怪,和13.1情况不一样,即使没执行任何命令,也不可以直接checkout,会报错,请在切换分支之前暂存修改内容。

    如果任何命令都没有执行:

    步骤如下:

    Git stash:暂存所有更改

    Git checkout release

    Git checkout -b newUpsteam

    Git  stash apply:将所有的修改应用到当下(newUpsteam)分支

    Git stash  list:查看刚才贮存的内容

    git stash drop stash@{0}:丢弃刚才贮存的内容

    14,  分支落后于master

    切换到本地mastergit pull

    切换到正在开发的分支:git merge master

    15,回退到历史版本

    git. log查看历史版本

    git.  reset. - - hard.  版本号

    如果已经开发了几个月的代码,想看几个月前在线上的旧代码情况,需要切换到master,然后

    16,删除远程push错误的版本

    远程b版本是错误的,a是正确的,想把远程的b删除,然后从a开始改

    首先git log找到a

    然后reseta

    然后push. —force

    17,覆盖上一次commit的记录

    git commit--amend

    18,修改倒数第三次的提交记录

    git rebase -i HEAD~3:

    git add

     git commit --amend 

    git rebase --continue

    19,查看项目仓库地址

    git remote -v

    20,修改项目远程git仓库地址

    git remote

    Git remote get-url origin                   获取当前仓库地址

    Git remote set-url origin ‘newurl’.    设置新的仓库地址

    21,关闭提交代码pre-commit预检行为

    在finder中打开文件夹,command+shif+句号,显示所有隐藏文件夹

    在.git文件夹中,打开hooks文件夹,清空里面的内容即可

    22,vscode从release切换到分支自动拉取最新代码

    23github上的项目运行快捷键

    用vscode打开项目:在仓库详情页,按句号。(英文的句号)

    在线运行项目:在github.com之前添加gitpod.io/#/即可

    24,  查询commit版本号

    386b1eb679b034464ee939b28f3fc8a0bc1ed32f

    当前:  git rev-parse HEAD

    历史所有:git log

    25git tag

    npm run release之后执行npm unpublish,再次npm run release报错git tag v2.3.17 already exists

    执行git tag -d v2.3.17就行

    如果删除失败需要查看一下所有的tag,是不是删除的不是最后一个tag:

    Git tag 查看所有tag版本

    如果在github官网删除tag,本地也删除了tag,还是报错,那么假如你下次要升级到39,要删除的tag也是39,此时应该本地package.json改为38,

    然后执行git push,再次npm run release基本就行了。

    26,拒绝合并无关的历史

    --allow-unrelated-histories

    当复制黏贴一个项目,推送到远程github,这没问题。

    然后删除本地项目的git所有记录信息。

    重新git init,git remote add

    这个时候git pull origin master

    会报错:拒绝合并无关的历史。

    解决办法: git pull origin master --allow-unrelated-histories

    27,如何删除远程commit历史记录

    复制别的项目的代码,忘记删除.git隐藏文件,导致push后,远程携带很多旧项目的commit

    比如要删除远程master的记录:

    git checkout --orphan latest_branch

    git add -A

    git commit -am "commit message"

    git branch -D master

    git branch -m master

    git push -f origin master

    最后一个命令执行的时候可能会报错,不允许对受保护的文件夹执行force push

    直接在github中点击,setting=>protected Branches=>点击底部Unprotect按钮。

    最后push完毕,再把master分支添加为protected branches

    28error: 源引用规格 master 没有匹配

    你是不是忘记git. add

    Git commit -m 了?

    29,本地分支强行覆盖远程分支

    git push -f --set-upstream origin master:master
    如果出现报错:You are not allowed to force push code to a protected branch on this project

    点击设置螺丝图,下拉框中选择protected Braches,然后取消master的保护

    再次执行git push -f --set-upstream origin master:master

    成功后恢复master的protect

  • 相关阅读:
    【ROS小车课设】虚拟机端编译riki工作空间问题解决
    传统目标检测算法【1】-Mean shift
    MySQL索引特性(上)
    python基础语法14-GUI编程2
    NFT平台开发:NFT数字馆藏平台开发
    IDC 中国边缘云市场最新报告解读:阿里云蝉联中国公有云市场第一
    支付成功后给指定人员发送微信公众号消息
    psutils连接虚拟机
    网络策略实战
    【C++】类和对象要点汇总
  • 原文地址:https://blog.csdn.net/kalinux/article/details/127610741