git/git-svn使用总结(持续更新)

一、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仓库

使用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://地址:端口
### GitSVN 的协同工作方法及场景 GitSVN 可以通过特定的方式实现协同工作,尤其是在团队中存在不同版本控制系统需求的情况下。以下是关于两者如何协同工作的详细介绍: #### 场景描述 当开发人员希望在本地使用 Git 提供的强大功能(如离线操作、分支管理),但项目的主要版本控制仍然基于 SVN 时,可以通过 `git-svn` 工具来桥接这两种系统[^5]。 #### 实现方式 1. **初始化 Git-SVN 配置** 使用 `git svn clone` 命令可以从 SVN 仓库克隆一份完整的代码到本地并将其作为 Git 仓库进行管理。 ```bash git svn clone <svn-repository-url> -T trunk -b branches -t tags ``` 此命令会将 SVN 的结构映射到 Git 的标准布局中,其中 `-T`, `-b`, `-t` 参数分别指定 trunk, branches 和 tags 对应的位置。 2. **同步更新** 开发者可以在本地执行常规的 Git 操作(如 commit, branch)。为了保持与远程 SVN 同步,需定期运行以下命令: ```bash git svn rebase ``` 这条指令会获取最新的 SVN 更改并将它们应用到当前分支上。 3. **提交更改至 SVN** 当开发者完成一系列修改后,可利用下面的命令推送改动回 SVN 服务器: ```bash git svn dcommit ``` 上述命令会逐一将所有的 Git commits 转化成单独的 SVN revisions 并上传。 4. **特殊权限情况下的处理** 如果用户的 SVN 账号仅限于访问某些分支而非整个项目,则需要调整初始配置阶段中的 URL 设置,确保指向正确的子路径。 #### 技术差异考量 尽管能够实现二者间的协作,但在实际运用过程中需要注意一些技术上的区别。例如,由于 Git 是分布式的而 SVN 则是集中的模型设计,在冲突解决机制等方面可能存在不一致之处[^4]。 ```python # 示例 Python 脚本展示自动化部分流程 (伪代码形式) import subprocess def sync_git_svn(): try: result = subprocess.run(['git', 'svn', 'rebase'], check=True) print("Rebased successfully.") except Exception as e: print(f"Error during rebasing: {e}") sync_git_svn() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值