git新建分支
1)切换到基础分支,如主干
git checkout master
2)创建并切换到新分支
git checkout -b newBranch // git branch可以看到已经在newBranch分支上
3)更新分支代码并提交
git add *
git commit -m "init panda"
git push origin panda
4)在git代码管理界面经可以看到panda分支了,成功~~
git查看生成的密钥: cat ~/.ssh/id_rsa.pub
【 查看 】
$ git status // 显示有变更的文件
$ git log // 显示当前分支的版本历史
$git reflog // 获取执行过的命令
$ git diff // 显示暂存区和工作区的代码差异
$ git diff --cached // 暂存区和 HEAD 的差异
$ git diff HEAD // 工作区和 HEAD 的差异
注意: diff 查看文件时 warning: LF will be replaced by CRLF in windows中换行符为CRLF 而在linux下的换行符为LF所以在执行add . 时出现提示,解决办法:git config --global core.autocrlf false
$ git show [commit] //显示某次提交的原数据和内容变化
$ git log --oneline -5 //命令查看最近 5 次的提交信息
【 分支 】
$ git checkout 创建分支
切换分支
$ git checkout -b 分支名 // 创建并切换到新建的分支上
$git branch //查看所有分支 加上 -a可查看远程分支
合并分支
$git merge 分支名 // 合并 分支 到当前分支上
git merge --no-ff -m // '合并描述' 分支名 不使用Fast forward方式合并,
// 采用这种方式合并可以看到合并记录
git log --graph // 查看分支合并图
$git brabch -b 分支名 origin/分支名 // 创建远程分支到本地
git branch --merged // 查看别的分支和当前分支合并过的分支
删除分支
$ git branch -d 分支名 // 删除分支 -D 强行删除
$git branch origin :分支名 // 删除远处仓库分支
【 远程同步 】
1.下载远程仓库的所有变动
$ git remote update --更新远程仓储
$ git remote -v // 显示更详细的信息 抓取和推送的origin的地址 如果没有推送权限看不到
2.取回远程仓库的变化,并与本地分支合并
$ git pull [remote] [branch]
3.上传本地指定分支到远程仓库
$ git push 远程仓库 分支
【 撤销 】
git reset --hard (commit_id) // 回退到某个版本
git checkout -- file // 撤销修改的文件(如果文件加入到了暂存区,则回退到暂存区的,
// 如果文件加入到了版本库,则还原至加入版本库之后的状态)
git reset HEAD file // 撤回暂存区的文件修改到工作区 git add 到暂存区但还没git commit
【 暂存操作 Bug分支 】
git stash // 暂存当前修改
git stash apply // 恢复最近的一次暂存
git stash pop // 恢复暂存并删除暂存记录
git stash list // 查看暂存列表
git stash clear // 清除暂存
// 场景: 当前正在dev分支上进行的工作还没有提交 , 你接到一个修复代号101的bug任务时
//(代码只写了一半没法提交,但是bug必须在两小时内修复,怎么办?)
git stash // 把当前工作现场"储藏"起来,等以后恢复现场后继续工作
git status // 查看工作区 是干净的 可以放心创建分支修复bug
//首先确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支:
git checkout master
git checkout -b issue-101 // 创建修复bug分支
// 修复bug 提交就可以了 git add . git commit -m "fix bug 101"
// 修复完成后,切换到master分支,并完成合并,最后删除
git checkout master
git merge --no-ff -m "merged bug fix 101"
git branch -d issue-10
// 回到dev分支 可以用git stash list 查看暂存列表
git stash pop // 恢复暂存并删除暂存记录
git stash apply stash@{0} // 恢复指定的stash
GitHub提交出了些问题,导致之前提交的更新丢失,考虑回退到之前的版本
恢复历史版本:
git reset --hard [你的commit id] // 回退之前版本
git push -f -u origin master // 强制推送
【 标签操作 】
git tag 标签名 // 添加标签(默认对当前版本)
git tag 标签名 commit_id // 对某一提交记录打标签
git tag -a 标签名 -m '描述' // 创建新标签并增加备注
git tag // 列出所有标签列表
git show 标签名 // 查看标签信息
git push origin 标签名 // 推送标签到远程仓库
git push origin --tags // 推送所有标签到远程仓库
git tag -d 标签名 // 删除本地标签
git push origin :refs/tags/标签名 // 从远程仓库中删除标签
【 常规操作 】
git push origin test // 推送本地分支到远程仓库
git rm -r --cached 文件/文件夹名字 // 取消文件被版本控制
git check-ignore -v 文件名 // 查看忽略规则
git add -f 文件名 // 强制将文件提交
【 git-bush 常用命令 】
$ pwd // 打印工作目录
$ls // 目录 ls -a 包括隐藏文件|目录
"- f "忽略不存在的文件,强制删除,不给出提示。
$clear // 清屏
$vi 文件名 // 编辑 i 进入插入模式 esc 回到命令模式 :w 保存 :q退出 :wq 保存退出
【 git全局配置 】
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
【 vue项目 】
在github创建一个远程仓库(空仓库)
git init [program-name] 新建一个目录,将其初始化为Git代码库
本地已经有一个仓库了,但是刚才修改了一些文件。
$git add .
$git commit -m 'initial'
推送远程仓库
$git remote add origin url // 关联远程仓库 , 给远程仓库的地址 取别名
$git push -u origin master // 按照别名推送master分支
忽略已加入到版本库中的文件
git update-index --assume-unchanged file 忽略单个文件
git rm -r --cached 文件/文件夹名字 (. 忽略全部文件)
取消忽略文件
git update-index --no-assume-unchanged file
拉取、上传免密码
git config --global credential.helper store
如果项目已经有git需要换一个git地址
git remote -v 确认本地是否关联了旧仓库
→ git remote remove origin(解绑旧远程仓库)
→ git remote add origin https://新仓库的地址.git(绑新)
→ git push -u origin (master)(推送)
如果新建仓库时勾选了 README/.gitignore,推送会报错,解决方案:
# 先拉取远程文件并合并
git pull --rebase origin main
# 再次推送
git push
保留旧仓库,仅新增推送目标
# 给新仓库起别名:new-origin(可自定义)
git remote add new-origin https://新仓库地址.git
# 推送到新仓库
git push new-origin master
【 分支完成 推送远程分支 】
git push 远程仓库地址 login // 推送到远程仓库 login分支
git checkout master // 切换到主分支
git merge login // 合并分支
git push 远程仓库地址 master // 主分支推送
如果代码写错分支 写到主分支 还git add . git commit -m ""
退回git add . 版本
然后在主分支上创建切换分支 分支就会有主分支代码
如果只是写错分支 代码也是最新的 直接创建切换到新分支
- npm un node-sass 卸载 node-sass
- npm i node-sass -D 安装node-sass
npm i server-cli -g 全局安装 服务器cli
【git仓库和github仓库之间的传输协议】
.ssh
1.创建SSH Key (在用户主目录下,看看有没有.ssh目录
如果有该目录下是否有 id_rsa和id_rsa.pub,如果有这两个文件.
直接跳过下一步,没有 创建)
$ ssh-keygen -t rsa -C "youremail@example.com" // 你的邮箱
2.登陆GitHub,打开"Account settings","SSH Keys"页面:
然后,点"Add SSH Key",填上任意Title,在Key文本框里粘贴 id_rsa.pub 文件的内容:
点"Add Key",你就应该看到已经添加的Key
3.github上创建仓库
// 关联远程仓库 , 给远程仓库的地址 取别名
git remote add origin https://github.com/magicstf/learngit.git
$git push -u origin master // 按照别名推送master分支 -u参数Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令 git push
【从远程库克隆】
1.从零开始 先创建远程库: 登录GitHub 创建一个新的仓库
2.$ git clone git@github.com:magicstf/gitskills.git // 克隆到本地仓库
【多人协作的工作模式通常是这样:】
- 首先,可以试图用git push origin 推送自己的修改;
- 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
- 如果合并有冲突,则解决冲突,并在本地提交;
- 没有冲突或者解决掉冲突后,再用git push origin 推送就能成功!
如果git pull提示 no tracking information ,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin/。
【忽略特殊文件】
在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。
忽略原则:
- 忽略操作系统自动生成的文件;
- 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如 /node_modules、/dist目录;
- 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
【查找某文件修改历史记录】
git log 文件名
git log --stat [查到的提交记录号] 查看commit历史,以及每次commit发生变更的文件列表