Featured image of post git使用问题记录

git使用问题记录

目录

ubuntu下出现git log 外文正常显示、中文显示乱码的问题

描述:

中文显示位尖括号 <E4><B8><B4><E6><97><B6><E4><BF><9D><E5><AD><98>

解决:

1
2
3
git config --global i18n.commitencoding utf-8
git config --global i18n.logoutputencoding gbk
export LESSCHARSET=utf-8
SHELL

git status时也会出现类似问题,但导致原因却不相同,可使用下面命令解决

1
git config --global core.quotepath false
SHELL

跨系统基于挂载文件开发时常出现提交后,在另一系统上仍然存在多个未提交

描述:

在多个系统间本地开发时,使用挂载目录进行编码、提交分离时,常常出现在一端提交,而另一端vs code提示多个未添加的变更,这常常是不同系统间filemode差异

解决:

1
git config --add core.filemode false
SHELL

修改submodule

修改 .gitmodules 文件中对应模块的 url 属性;

使用 git submodule sync 命令,将新的 URL 更新到文件. git/config;

再使用命令初始化子模块:git submodule init

最后使用命令更新子模块:git submodule update

参考: Git 修改. Submodule 文件 url 生效

gitea action拉取submodule非本用户或本群组仓库时出错

参考 gitea action checkout的密钥配置

需要配置好action的密钥对,依次在submodule里配置公钥,并在action所在仓库配置私钥传递到action,在action里正确配置密钥后即可正常拉取

git 为不同分支设置不同的upstream

one repo with multi upstream
    为不同分支配置不同的远程仓库

逻辑视图

RmeyproepoBpprruaibnvlcaihtceRggeiimtto.htmueybd.Locomocamaitni.ocnom(((IPPnuucbrrlpeiomcseenr)tealleawsoersk))

实现过程

1. 新建仓库

基于已有仓库,直接跳 2

1
2
3
4
5
# 新建仓库
$: mkdir myrepo; cd myrepo

# 初始化仓库
$: git init
SHELL

​​​​​​

2. 添加远程仓库源

1
2
3
# github 和 mydomain 是所添加源的别称,称其为<source name>
$: git remote add github https://github.com/foo/bar.git
$: git remote add mydomain https://git.mydomain.com/foo/bar.git
SHELL

显示远程仓库:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 显示所有远程仓库
$: git remote -v

# 显示某个远程仓库的信息
$: git remote show <source name>

# 删除远程仓库
$: git remote rm <source name>

# 修改远程仓库别名
$: git remote rename <old name> <new name>
SHELL

3. 创建空白分支

1
2
# 创建空白分支dev
$: git checkout --orphan public
SHELL

如果是基于已有的分支创建,需要清空

1
2
# 注意最后有一个句点
$: git rm -rf .
SHELL

4. 拉取分支,将本地分支与远程分支关联

在创建的空白分支下,拉取远程仓库指定分支的代码。

1
2
3
4
5
6
7
8
# github源别名,master是要引用的github远程分支名
$: git pull github master

# 关联远程分支
$: git branch --set-upstream-to=github/master public

# 或者
$: git branch -u github/master public
SHELL

至此,我们已经创建了一个本地分支,并将其与远程分支关联。

同样的,创建其它分支只需要重复步骤 3、4。

例如创建 private 分支,并将其与远程仓库 mydomain 的 private 分支关联,步骤如下:

1
2
3
$: git checkout --orphan private
$: git pull mydomain private
$: git branch -u github/private private
SHELL

5. 推送本地分支

因为本地分支已经关联了远程分支,所以推送时只需要 git push 即可。

如果没有关联远程分支则需要:

1
$: git push <source name> <branch name>
SHELL

请在评论前阅读我们的评论政策


内容是由智能博客生成器生产 powered by ChatGGPTT
使用 Hugo 构建
主题 StackedJimmy 设计,Jacob 修改