赞
踩
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
11,git 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
切换到本地master:git pull
切换到正在开发的分支:git merge master
15,回退到历史版本
git. log查看历史版本
git. reset. - - hard. 版本号
如果已经开发了几个月的代码,想看几个月前在线上的旧代码情况,需要切换到master,然后
16,删除远程push错误的版本
远程b版本是错误的,a是正确的,想把远程的b删除,然后从a开始改
首先git log找到a
然后reset到a
然后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切换到分支自动拉取最新代码
23,github上的项目运行快捷键
用vscode打开项目:在仓库详情页,按句号。(英文的句号)
在线运行项目:在github.com之前添加gitpod.io/#/即可
24, 查询commit版本号
386b1eb679b034464ee939b28f3fc8a0bc1ed32f
当前: git rev-parse HEAD
历史所有:git log
25,git 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
28,error: 源引用规格 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。