一、git的基本操作
1.本地项目绑定远程仓库
(1) 初始化仓库
git init
(2) 设置远程仓库地址
git remote add origin 远程仓库地址
(3) 将本地代码提交暂存区
git add .
(4) 将暂存区代码提交到本地仓库
git commit -m "提交说明"
(5) 拉取远程仓库代码
git pull origin master/main
(6) 推送到远程仓库
git push
2.克隆远程仓库
(1) 在github/gitee上新建一个仓库
(2) 克隆远程仓库
git clone 远程仓库地址
(3) 在克隆好的仓库中进行编辑,后续的提交命令都一样
3.常用命令
(1) 查看当前暂存区的状态:
git status
(2) 更新代码,获取远程仓库的代码
git pull
(3) 添加文件到暂存区
git add test.txt
(添加单个文件)
git add .
(添加全部有更改的文件)
(4) 提交文件
git commit -m "填写提交信息"
(5) 推送文件到远程服务器
git push
(6) 更改文件名大小写
git mv jobTask.vue JobTask.vue
注意: 先更新远程仓库的代码,再提交自己的代码,避免冲突。
4.git stash
(1) 查看所有stash列表
git stash list
每个 stash 都会有一个唯一的引用编号,例如 stash@{0}、stash@{1} 等
(2) 恢复指定的stash
git stash apply stash@{n}
恢复指定的 stash 不会从stash列表中删除
n 是stash的索引编号
git stash pop stash@{n}
恢复指定的 stash 并从stash列表中删除
(3) 查看stash的详细内容
在恢复之前,你可以查看某个 stash 的具体更改内容,以确认是否是你需要的版本
git stash show -p stash@{n}
(4) 清理stash
git stash drop stash@{n}
清空指定stash
git stash clear
清空所有stash
注: 如果报错 error: unknown switch 'e
通常是由于在 PowerShell 或某些 IDE 终端中执行 git stash apply stash@{0}
命令时,花括号 {} 被错误解析导致的.
方法一:转义花括号
在 PowerShell 或某些 IDE 终端中,可以通过反引号对花括号进行转义。这种方法适用于单次操作,但每次都需要手动转义。例如:
git stash apply stash@`{0`}
方法二:更改默认终端
如果使用的是 IDE(如 IntelliJ IDEA 或 VS Code),可以将默认终端从 PowerShell 更改为 Git Bash 或 Command Prompt。具体步骤如下:
打开 IDE 设置。
搜索 Terminal 或 Default Profile。
将默认终端更改为 Git Bash 或 Command Prompt。
更改后,再次运行命令时就不会出现该错误。
方法三:使用引号包裹
如果不想更改默认终端,也可以通过将 stash@{0} 用引号包裹来避免解析错误:
git stash apply "stash@{0}"
二、使用git操作svn仓库
常用命令
(1)通过git克隆svn远程仓库地址
git svn clone svn仓库地址
(2) 暂存本地的修改文件
git stash
(3) 拉取服务器更新的代码
git svn pull rebase
git svn pull 和 git svn pull rebase的区别:
git svn pull rebase:
- git svn fetch 从SVN仓库中获取最新提交
- git rebase 将本地分支的更改重新应用到从SVN获取的最新提交之上(变基操作)
git svn pull:
- git svn fetch
- git merge 将SVN获取的最新提交合并到当前本地分支
(4) 恢复暂存的文件
git stash pop
恢复最近一次保存的更改,并从 stash 栈中移除
git stash apply
恢复最近一次保存的更改,但不会从 stash 栈中移除
(5) 恢复到指定的stash
git stash pop "stash@{1}"
(6) 添加文件到暂存区 (同git)
git add .
(7) 提交到本地仓库(同git)
git commit -m “提交信息”
(8) 推送到远程svn仓库
git svn dcommit
(9) 撤销最近一次提交
1.git reset --soft HEAD^
撤销最近一次提交,但保留所有更改在暂存区中,方便重新修改或重新提交(相当于已经执行了git add)
撤销的提交仍然存在于 Git 的历史中,可以通过 git reflog
找到并恢复
2.git reset --hard HEAD^
撤销最近一次提交并丢弃所有未提交更改
注意:使用git操作snv仓库,拉取与推送代码时注意暂存区不能有文件,要先用git stash
把不需要提交的文件藏起来.
三、分支相关操作
(1) 查看分支
git branch
查看本地的所有分支
git branch -r
查看远程仓库的所有分支
git branch -a
查看所有分支(本地分支+远程仓库分支)
(2) 创建分支并切换到新分支
git checkout -b 分支名
(3) 切换分支
git checkout 分支名
(4) 切换到主分支(以下两种都可)
git checkout master
git switch master
(5) 合并分支代码到主分支(同时合并分支上的提交记录)
git merge 分支名 --squash
(加上 --squash 可合并提交记录)
(6) 在主分支上提交到本地仓库
git commit -m "提交信息"
(7) 推送到svn远程仓库
git svn dcommit
(8) 删除本地分支
git branch -d 分支名
会在删除前检查merge状态,如果分支包含未合并的更改和未推送的提交,则不允许删除本地分支
git branch -D 分支名
强制删除分支
git branch -m 分支名
删除已经合并的分支,并将它们合并到当前分支
(9) 删除远程分支
git push 远程仓库别名 --delete 远程仓库分支名
示例:删除远程仓库中的dev-test 分支
git push origin -d "div-test"
(10) 更新本地的远程跟踪分支列表,确保已删除的分支不再显示
git fetch -p
四、其他git操作
1.git更换远程仓库地址
操作步骤:
1).打开项目文件夹中的 .git
2).打开config
3).修改远程仓库地址
2.gitignore 忽略文件不起作用
新建的文件在git中会有缓存,如果某些文件已经被纳入版本管理中,那么就算在.gitignore
中已经声明了也会不起作用。需删除git的本地缓存;
#清除当前的本地Git缓存
git rm -r --cached .
#应用 .gitignore 等本地配置文件重新建立Git索引
git add .
#提交当前Git版本并备注
git commit -m "update .gitignore"
3. 配置git代理
git config --global http.proxy http://地址:端口
git config --global https.proxy http://地址:端口
4.取消git代理
//取消http代理
git config --global --unset http.proxy
//取消https代理
git config --global --unset https.proxy
5. 查看git配置
git config --global -l
6.在git中忽略某些文件
git update-index --skip-worktree <file>
用于标记某些文件或目录,使其在工作目录中的更改不会被Git 跟踪。
取消标记:git update-index --no-skip-worktree <file>
主要用途
忽略本地配置文件: 某些文件可能包含本地开发环境的配置信息,这些信息不应该提交到远程仓库,但你又不想完全忽略这些文件,例如本地配置文件。
避免冲突: 在团队开发中,某些配置文件可能因本地环境不同而频繁发生变化,使用 --skip-worktree 可以避免这些文件在合并时产生冲突。
与 .gitignore 的区别
.gitignore: 用于完全忽略文件,这些文件不会出现在 Git 的任何跟踪列表中。
–skip-worktree: 用于标记已经跟踪的文件,使其在工作目录中的更改不会被跟踪,但文件仍然在仓库中。
最后:
以上命令是在工作中用到的,还有一些目前没有遇到,持续更新中……
使用git遇到的问题
1. git add . 无反应
问题描述:
初始化项目时,想要将项目提交到仓库中,执行git add .
命令之后半天没有反应。
解决方法:
1).删除index.lock 文件,执行命令:rm -f .git/index.lock
2).重新git add .
2. 报错:OpenSSL SSL_read: Connection was reset, errno 10054
修改git设置,解除SSL验证
执行命令:git config --global http.sslVerify "false"
3.执行完git pull --rebase之后如果有合并冲突,使用以下三种方式处理这些冲突
- git rebase --abort
会放弃合并,回到rebase操作之前的状态,之前的提交的不会丢弃; - git rebase --skip
会将引起冲突的commits丢弃掉(慎用!!); - git rebase --continue
合并冲突,结合"git add 文件"命令一起用与修复冲突,提示开发者,一步一步地有没有解决冲突。(fix conflicts and then run “git
rebase --continue”)
4.git clone 报错
fatal: unable to access 'https://github.com/janarosmonaliev/github-globe.git/': Failed to connect to github.com port 443 after 21098 ms: Timed out
原因:
使用了网络代理,需要配置Git的代理设置
解决方法:
1.取消代理
//取消http代理
git config --global --unset http.proxy
//取消https代理
git config --global --unset https.proxy
2.配置git 代理
git config --global http.proxy http://地址:端口
git config --global https.proxy http://地址:端口