(HP)git实战命令(小技巧篇)

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

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值