git 安装
git - ssh密钥操作
- 第一步:检查自己电脑是否存在 ssh公钥
- 指令:ls -al ~/.ssh
- 第二步:检查自己之前是否配置过git 环境
- 指令:git config user.name 和 git config user.email
-
- 如果需要修改原来的git环境:直接在上面两条命令后面 添加自己要更换的;
-
- 如果没有创建:
- 指令:- git config –global user.name ‘xxxxx’
- git config –global user.email ‘xxx@xx.xxx’
-注意:复制上面指令时 global 前的 ‘ -- ’ 需要手打,否则有可能报错
- 第三步:生成ssh密钥
- 指令:ssh-keygen -t rsa -C ‘上面的邮箱’
-
- 参数的含义:
-t 指定密钥类型,默认是 rsa ,可以省略。
-C 设置注释文字,比如邮箱。
-f 指定密钥文件存储文件名。
(接着连点三次回车 会自动生成ssh密钥)
- 第四步:将rsa.pub里的密钥添加到远端
- rsa.pub 文件一般都在 c盘 用户文件夹下的.ssh文件夹中;
第五步:测试ssh密钥是否设置成功;
- $ ssh -T git@github.com (github 测试)
- Hi 用户名! You’ve successfully authenticated, but GitHub does not provide shell access.(github 绑定成功显示)
- $ ssh -T git@gitee.com (gitee 测试)
- Hi 用户名! You’ve successfully authenticated, but GITEE.COM does not provide shell access.(gitee绑定成功显示)
git常用指令
1、git init :初始化本地仓库
2、git status : 查看当前仓库状态;
3、git add . : 将新建文件添加至缓存区;
4、git commit -m “本次提交的描述” : 将添加进缓存区的文件,添加进本地仓库
5、git log : 输出仓库中所有的commit 提交,和与之对应的 id值。
6、git reflog : 可以查看所有 commit 提交的版本号。
7、 git reset --hard commit-id :在 commit 提交的版本之间进行回退。
- git reset --hard HEAD^
- HEAD^ :一个 ^ 表示 回退到上一个版本
- HEAD^^ : 两个 ^ 表示 回退到上上一个 版本
- 依次类推 …
git 版本回退 git reset
-
git reset --hard
:进行已修改或者暂存,但未提交文件的回退 -
git reset --hard origin/master
进行已提交,但未推送的版本回退 -
1:
git reset --hard HEAD^
-
2:
git push -f
这两条命令是进行已提交且推送的回退,git reset --hard HEAD^为先回退到上一个版本,git push -f 是进行强制推送,覆盖远程分支。
补充内容:
上面的–hard 可以替换成其它的恢复等级,一般用–soft,这样一些修改的内容不会丢失。
多版本回退:
git reset --hard head #当前版本
git reset --hard HEAD^ #回退到上一个版本
git reset --hard HEAD^^ #回退到上上一个版本
git reset --hard HEAD~3 #回退到往上3个版本
git reset --hard HEAD~10 #回退到往上10个版本
根据版本号进行版本回退:
git reset --hard 710ae83
回退后,可以再用 log 和 relog 查看下版本的记录,对比下他们的区别。
相关指令
git log
- 用来查看 git 的提交记录,但不能查看已经删除的记录。
git reflog
- 可以查看看所有分支的所有操作记录(包括(包括 commit 和 reset 的操作),包括已经被删除的 commit 记录。
git 版本回退流程
第一步:git checkout [分支] 切换到要恢复的分支上;
第二步:git reflog 查看历史版本号,找到要恢复的版本号;
第三步:git reset --hard [版本号] 将本地代码回退到指定版本;
第四步: git push -f 将本地代码强制提交,覆盖远程git服务器代码;
git远程仓库相关指令
1、git remote add origin (这个名字可以随意起)+ 远程仓库 地址:关联远程仓库
2、git push -u origin master : 向远程仓库中 推本地仓库的数据;
git push origin master : 第二次推送则不需要 -u;
3、每次本地仓库的 代码发生变动都需要先, git add . 和 git commit -m “更新代码的描述”;
4、git clone + 远程仓库地址 :下载完成后,本地仓库会自动关联 远程仓库,修改代码的时候只需要push就可以了;
5、★★★ git pull origin master :拉取远程仓库代码到本地;
建议:每次向远程仓库推送(push)之前,先进行一次 拉(pull),因为要保证 远程仓库与本地仓库内的代码一致,才不会出现bug
git创建分支
1、git branch :查看当前所有分支
2、git checkout -b 分支名称 :创建并切换 分支
3、git checkout 分支名称 :切换分支
4、git merge 分支名称 :合并分支;
注意:向A 分支中合并 B分支,需要先 git checkout A 回到A 分支,然后再 git merge B ;
a. 每一次分支中的代码发生变化时,都需要先 git add . , git commit -m " ",向本地仓库中提交一次。
b. 然后根据自己的 需要 向相关的分支中进行 合并 git merge 分支名称;
c. 最后,先 git pull orgin master 拉取一下远程仓库的数据,再 git push origin master 向远程仓库中推送数据;(推送的同时会再远程仓库 创建相对应的分支)
git 仅提交修改文件
git commit < file > -m"your comment"
git 提交部分文件
主要思路 :
- 先将需要提交的代码 暂存 (commit) 一下
- 然后更改区 就会 只剩下不需要的文件
- 在命令行输入 命令 " git stash" 将不需要的提交的代码 隐藏(贮藏) 一下, 这时候会隐藏 更改区的文件.
- 点击右上角的更新同步代码,就可以完成更新最新的代码,或者是提交自己想要提交的代码
- 在更新和 提交成功之后 , 在命令行输入 " git stash pop " 将之前缓存工作目录的文件提取还原回来
git stash 相关使用
git stash 推荐配合使用指令
- git stash save “隐藏 git 版本信息” (用作区分不同 git 版本记录)
- git stash list (查看本地 git 隐藏的历史版本)
- git stash pop stash@{index} (释放对应隐藏的 git 版本)
git stash 相关指令
命令 | 说明 |
---|---|
git stath | 将当前工作空间的状态保存 |
git stash list | 查看当前 Git 中存储的所有状态 |
git stash apply {stashName} | 根据存储名称读取 Git 存储 |
git stash clear | 注意这是清空你所有的内容 |
git stash drop {stashName} | 根据存储名称删除 Git 存储 |
git stash save “日志信息” | 将当前工作空间的状态保存并指定一个日志信息 |
git stash pop | 读取 stash 堆栈中的第一个存储,并将该存储从 stash 堆栈中移除 |
git stash show [-p] {stashName} | 查看指定存储与未建立存储时的差异 -p:显示详细差异 |
git stash branch {branchName} [stashName] | 创建并切换到一个新分支来读取指定的存储 stashName:存储的名称,默认情况下读取 stash 堆栈中栈顶的存储 |
git stash pop 和 git stash apply 区别
git stash apply: 会将当前分支的最后一次缓存的内容释放出来,但是刚才的记录还存在list中
git stash pop: 也会将当前分支的最后一次缓存的内容释放出来,但是刚才的记录不存在list中
解决 vscode 终端
使用 stash 指令报错问题
原因:VS Code 默认 Shell 就是 PowerShell, 在 PowerShell 文档中 ,发现花括号在 PowerShell 中被认为是代码块执行标识符。
解决办法: 想正常使用,可用反引号 、` 进行转义,(或将终端调整成 cmd , git bash
等)。
<!-- 查看本地贮藏的git版本 -->
git stash list
<!-- 根据版本释放对应git记录 :反引号是为了解决 powershell 报错问题 -->
git stash pop stash@`{1`}
git 新增文件无法进行 stash 贮藏 解决办法
- 新增文件无法 git stash 贮藏 是因为,git没有生成 追踪记录(提交记录)。
- 解决办法:可以使用 git add. 将新增文件进行本地缓存(临时缓存)。随后使用 git stash 就可以将新增的文件进行 贮藏了。
vscode 仍旧显示已经删除的远程分支
解决办法:运行命令,修剪远程分支
获取最新
的远程分支列表:
git remote prune origin
这个命令会删除已在远程存储库中删除的分支在本地的引用。通过这个命令,VS Code 将不再显示已删除的分支。
更新本地分支列表:
git fetch --prune
这个命令会从远程存储库中获取最新的分支,并删除本地已经不存在于远程存储库中的分支。
git 忽略大小写
// 忽略大小写
git config core.ignorecase true
// 取消忽略大小写的配置
git config --unset core.ignorecase
git 切换远程地址
方式一:修改远程仓库地址
- 【git remote set-url origin URL】 更换远程仓库地址,URL为新地址。
方式二:删除老的地址,然后再添加新的地址
- 【git remote rm origin】 删除现有远程仓库
- 【git remote add origin url】添加新远程仓库
- 查看当前地址仓库地址
git remote -v
- 参考文章@涵一
git 同时管理两个账号
git 推送代码 忽略某个文件夹
- 在项目根目录打开
git 小黑板
git bash here- 输入指令
touch .gitignore
指令- 在生成的 .gitignore 文件中, 配置 node_modules .(表示不追踪 node_modules 的更新状态)
- 参考文章@路人甲小码
.gitignore 文件
node_modules
git 删除远端仓库文件夹/文件
- 切换到需要删除文件夹/文件 的分支.
- 打开
git 小黑板
git bash here- 输入指令
dir
列出当前分支的所有文件目录- 输入指令
git rm -r 文件夹/文件 名
- git commit -m ‘删除备注’
- git pull , 推送到远端仓库即可.
- 最后刷新远端仓库 ,就可以看到指定文件被删除了.
- 参考文章@呀呀nnn
git fetch origin
用于从远程仓库(通常是名为 “origin” 的默认远程仓库)获取最新的提交和分支信息,但并不会自动合并或修改你的本地分支
假设你在本地有一个分支 master,远程仓库 origin 也有一个 master 分支。执行 git fetch origin 后,你可以查看远程分支的最新状态,但不会自动合并到本地分支:
$ git fetch origin
如果你想将远程分支的更改合并到本地分支,可以手动执行以下命令:
$ git checkout master
$ git merge origin/master
git 推送本地代码到远程仓库(空仓库)
cd existing_folder
git init
git remote add origin https://xxxxxxxxx.git (仓库地址)
git add .
git commit -m "Initial commit"
git push -u origin master
git 推送本地代码到已有的
远程仓库 (非空仓库)
cd existing_folder
git remote add origin https://coding.geely.com/0109199/ems-screen-monitor.git
git push -u origin --all
git push -u origin --tags
关于使用git命令行跳转到另一个编辑界面(vim编辑器)
解决办法:
- 按下字母键C(此时进入编辑状态),可以开始修改注释信息了
- 按下Esc (退出编辑状态); 接着连按两次大写字母Z,就可以保存退出了;
- 也可以 :q 强制退出
vim相关指令文章:
- https://blog.youkuaiyun.com/sinat_39571186/article/details/78911814
gitee 新建仓库,第一次如何与本地仓库关联
方式一
- 在本地新建一个文件夹,然后使用 git clone ,与远程仓库进行关联。
- 将创建好的项目复制到 关联好的远端仓库
方式二
- 在gitee 仓库创建好之后,会生成一个简易指令的知道,如下图所示。
- 在本地新建一个文件夹 ,然后右键 git bash here 打开 git 的命令行窗口。
- 在命令行窗口输入指令 git init
- 然后 将上图中 第二个方框中的指令粘贴到 命令行窗口,回车。
- 最后 进行第一次提交
git add .
git commit -m ‘first commit’
git push -u origin “master”
完成上面操作之后 就可以与远程仓库进行关联。
Git冲突:Please commit your changes or stash them before you merge
通过git stash ---- 通常用这种方法
git stash
git pull
git stash pop
git 推送报错
报错内容:
error: src refspec master does not match any. error: failed to push some refs to
常见原因::本地仓库目录中没有文件
,空目录不能提交。
解决办法:执行命令git pull --rebase origin master
一般而言,正常的推送流程应为:
1、在github上创建项目
2、使用git clone https://github.com/name/project.git克隆到本地
3、编辑项目
4、git add . (将变更提交至缓存区)
5、git commit -am “提交说明(注释)”
6、git push origin master 将本地变更推送至远程仓库master分支
git 推送报错 fatal: Authentication failed for
场景: 再向云端仓库推送本地代码的时候,git 密码输入错误 ,然后报错
fatal: Authentication failed for
解决办法:该办法每次推送代码都需要重新输入密码
git config --system --unset credential.helper
解决办法 2: 该办法在输入一次账号密码之后,就回存储在本地,之后推送代码则不需要重新输入
git config --global credential.helper store
git 报错 fatal: repository 'https://github.com/xxx' not found
可能原因:
- 本地仓库的地址与远程仓库不一致, 可通过
git remote -v
查看本地仓库的地址
git remote -v 命令来查看当前的远程仓库配置。
git remote set-url origin <url> 命令来重新配置远程仓库地址。
git config --global credential.helper cache 命令来更新你的认证信息。
- 没有改远程仓库的(推拉代码)权限
找负责人给开同权限
git 首次推送代码报错 src refspec master does not match any
- 这个报错大概是因为,仓库为空的原因。
- 解决办法:
- 使用
git add .
先将本地文件全部暂存
- 使用
git commit -m '提交信息'
提交代码
git remote add origin xxxxxxxx.git
git push -u origin master
- 上述操作应该就可以解决首次代码推送失败的问题.
- 参考文章@oliverhoo
svn相关知识点:
主要参考:https://zhuanlan.zhihu.com/p/349437775
博主:慧乐课堂
svn的主要操作:
SVN检出(SVN Checkout) SVN提交(上传 SVN Commit) SVN更新(下载 SVN Update )
重新定位:SVN地址发生改变时,需要重新定位
显示日志:查看历史记录
svn检出(svn checkout)
SVN检出是在第一次与SVN服务器建立连接的时候使用
检出时需要提供: SVN的地址 用户名和密码
注意:在检出前,先新建一个文件夹,因为检出时会检出很多文件和文件夹,新建一个文件夹就是为了把所有检出的文件和文件夹放在一起。
检出步骤,如下:
- 创建一个空的文件夹(项目名),如:D:\huileketang
- 进入新建的文件夹
- 右击,选择”SVN 检出…”
- 在打开的小窗口中,
a) 版本库URL:输入项目的svn url地址,
b) 检出至目录:输入第1步中新建的文件夹目录(D:\huileketang)- 点击 “确定”即可检出。
注意:如果是第一次检出,则会弹出下面的2张图,输入用户名和密码- 查看本机文件结果
SVN提交(上传 SVN Commit):
如果你想提交当前文件夹中所有修改的文件或者文件夹,那么你需要在文件夹的空白处右击,并选择“SVN提交©…”
如果你只想提交某一个文件或者文件夹的最新内容,那么你只需要右击那个文件或者文件夹,并选择“SVN提交©…”
svn更新(下载svn update)
- 进入到要下载更新的文件夹里(我的是D:\huileketang)
- 在文件夹“D:\huileketang”的空白处右击,如下图,点击“SVN更新(U)…”
重新定位
当SVN地址发生改变时,需要重新定位。
*
方法:在SVN对应的文件夹的空白处右击,选择“TortoiseSVN”—>“重新定位©…”
显示日志
查看历史记录,主要是查看文件或文件夹的提交历史,如谁、什么时间、提交了哪些文件或者文件夹。
@
方法:在SVN对应的文件夹的空白处右击,选择“TortoiseSVN”—>“显示日志(L)”
svn的状态图标的含义
1、“常规”:绿色圈带白色对勾,主要是表示自己电脑上的文件或者文件夹与SVN服务器上对应的文件一致,在自己电脑没有进行任何修改。
2、“修改”:红色圈带白色感叹号,当你开始编辑一个文件,这个文件的状态就会变成修改状态,图标也会变成红色圆圈带白色感叹号。通过这种状态的变化,你就可以知道自己修改过哪些文件,需要提交哪些文件。
3、“冲突”:黄色三角形带黑色感叹号,是指出现了冲突,一般在同时编辑一个文件时容易出现这种冲突的现象。
4、“只读”:灰色圈带白色对勾,这是设置只读属性后才会出现的标识,直到你获得文件锁才能取消只读。只读文件用这个重载图标来表示你必须在编辑之前先得到一个锁。
5、“已删除”:红色叉,表示相应文件或文件夹被计划删除,或者表示文件缺失。
6、“增加”:蓝色加号,表示文件或文件夹已经被计划加入到版本控制之下。通常是新建的文件或文件夹会有这个标识。
7、“忽略”:灰色圈带白色横线,表示已经不受版本控制了。
8、“无版本控制”:蓝色圈带白色问号,表示暂时还没有版本的控制,但没有被忽略。
9、“锁定”:一把黄色的锁,表示文件被锁定,必须先释放锁才能让别人的修改提交。