git way to explore https:https://cdn.v2ex.com/navatar/ec89/5663/102_normal.png?m=1589292852 https:https://cdn.v2ex.com/navatar/ec89/5663/102_large.png?m=1589292852 2025-10-10T11:54:59Z Copyright © 2010-2018, V2EX 一直不理解 Windows 下 git 的这个逻辑,我自己 clone 的仓库还不能删了? rm -force 也不行 tag:www.v2ex.com,2025-10-10:/t/1164206 2025-10-10T08:06:02Z 2025-10-10T11:54:59Z imjiaoyuan member/imjiaoyuan

非得重启一下才行? rm 之后变成空白目录了,就这还不能删 .....

]]>
分享一个 Git 存储库治理利器 - hot tag:www.v2ex.com,2025-09-08:/t/1157700 2025-09-08T02:02:01Z 2025-09-08T02:39:00Z forcecharlie member/forcecharlie 最近我们在下一代版本控制系统 HugeSCM (
https://github.com/antgroup/hugescm)整合了一个 Git 存储库治理利器 hot ,现在分享给 v 友,它支持很多的场景:

hot cat HEAD:docs/images/blob.png 
image

比如你查看仓库的信息,可以这样做:

hot stat 
image

将 Git 存储库对象格式从 SHA1 迁移到 SHA256:

hot mc https://github.com/antgroup/hugescm.git 
image ]]> 代码有没有必要备份到多个远程仓库?比如 github 和 codeup。有必要的话最好怎么备份? tag:www.v2ex.com,2025-09-06:/t/1157424 2025-09-06T00:10:07Z 2025-09-07T02:48:32Z shendaowu member/shendaowu 备份到远程仓库主要是为了防止代码丢失。多个我是怕一个远程仓库宕机能有其他的能用。有这些必要吗?我会定期备份到光盘和阿里云 WORM OSS 里。还有其他地方。我没找到 VS Code 的设置多个远程仓库的方便的方法,只能用命令行。

之前在别的地方问的时候有人说用 git remote set-url --add --push origin 仓库地址,谷歌英文搜了一下也基本都是这个命令。但是这个命令好像有点问题,如果最开始是通过 VS Code 的图形界面添加到 github 的私有仓库,那么第一次运行那个命令的时候会替换远程仓库,不是添加,第二次开始才是添加。这个问题不大吧?我没试最开始通过其他方式添加远程仓库会不会也这样。还有我看 remote 命令的 man 文档好像没有明确说这个命令的 --add 参数是用于什么情况的。有点不敢用。毕竟关系到代码的安全,不敢能用就凑合用。

]]>
请教 git 里怎么删除记录 tag:www.v2ex.com,2025-09-01:/t/1156172 2025-09-01T02:06:50Z 2025-09-01T08:41:54Z rrubick member/rrubick 请大佬指点:

分支情况如下图:

  1. 1 创建新的 test 分支
  2. test 分支上分别进行了 2 3 提交
  3. merge test to release 的时候产生了 4提交
  4. 删除了 test 分支

我现在想回退到 2来删除 3 4记录,是否能做到?如果可以的话,应该在哪个分支执行什么 git 命令。

]]>
git 中如何将子分支的多个提交作为一个提交合并到主分支? tag:www.v2ex.com,2025-08-15:/t/1152591 2025-08-15T03:28:24Z 2025-08-16T22:38:38Z tiRolin member/tiRolin 我们组长说从子分支到主分支一定要用变基保持 dev 的提交记录的干净,我在子分支里又喜欢写一段代码只要完成一小部分的功能就立刻提交,这样方便恢复,但是最后等变基然后合并到主分支的时候,我那一大堆提交记录也跟着带过来了,就让 dev 变得很难看,大概是这样

我后面学着用这个压缩提交,可以将多个提交记录压缩成一个然后再合并到主分支上,但是用完之后提交记录变得更加诡异了,甚至会变成两个我有两个完全一样的提交记录,给我都整不会了,合并的时候也特别麻烦,审阅了很多东西,最后还让组长帮忙看看最终的内容有没有预期之外的修改才敢合并的,出了这事之后我就不敢再用压缩提交了

下面是提交记录,之所以有两个一样的提交就是因为当时用了压缩提交

后面我又跟组长学修正提交,可以修正前一个提交来解决问题,但是我用修正提交的时候有时候不知道为什么还是会触发自动合并和更新,最后虽然说可以效果没变化,但是提交记录还是变得很难看,具体来说如下图所示

到这里为止我是真没办法,不知道该怎么解决这个问题,有没有懂得大佬来说一下,虽然说这个问题也不影响开发,但是这么乱的记录我看着心里挺膈应就是

]]>
git 切换分支问题 tag:www.v2ex.com,2025-08-12:/t/1151882 2025-08-12T09:29:50Z 2025-08-12T13:58:03Z a1208340028 member/a1208340028 git reflog 的全部日志 切换分支,少了 3 个版本号,有大佬解疑吗,会是 orgigin 、HEAD 这些问题吗 img

]]>
git 各种命令执行很慢是什么原因导致的? tag:www.v2ex.com,2025-07-30:/t/1148799 2025-07-30T08:09:03Z 2025-07-31T21:57:26Z imherer member/imherer 项目是放在 github 上的,在 windows 环境下,执行各种 git 命令很慢

比如:git status 、git log 等各种命令,基本上要等接近 1s 左右才返回。但是在 Linux 下却是瞬间就返回了,什么原因导致的?

然后我用 fork 这个 ui 工具,看 local changes 的时候点一个文件也要半天才加载出来

或者我点某个 commit 的时候,也要加载至少 1s 才能把这个 commit 的完整信息显示出来

还有就最近在编译 golang 项目的时候也要编译很久(至少分钟级),电脑配置是 64G i7-1365HX 。以前都是几秒就编译完成了。 编译的时候看电脑 CPU 和内存都不高

这咋办? 重装系统?

]]>
有没有大佬指导一下 git 问题 tag:www.v2ex.com,2025-06-30:/t/1141964 2025-06-30T06:11:11Z 2025-06-30T10:04:11Z free666 member/free666 A 、B 两个分支有同一个文件,某次提交我在 A 分支改了这个文件一行代码,但是提交后这个文件变成了 B 分支的内容,而且 git 还没有提示 后来也没再复现这个问题,有大佬知道什么情况会出现这种问题吗

]]>
git remotes 分支克隆 tag:www.v2ex.com,2025-06-17:/t/1139062 2025-06-17T01:55:05Z 2025-06-17T05:37:47Z huangya member/huangya
我说的 remote 分支和已经 checkout 的分支的例子:
tony@tony-EQ1:/project/openwrt/trunk$ git branch -a
* master
openwrt-22.03
openwrt-23.05
remotes/origin/HEAD -> origin/master
remotes/origin/lede-17.01
remotes/origin/master
remotes/origin/openwrt-22.03
remotes/origin/openwrt-23.05
remotes/origin/openwrt-24.10

其中 master ,openwrt-22.03 ,openwrt-23.5 为已经 checkout 的分支,其余为 remote 分支,还没有被 checkout 。 ]]>
两处修改需要分开提交吗? tag:www.v2ex.com,2025-06-16:/t/1138762 2025-06-16T01:25:51Z 2025-06-17T03:47:28Z aqtata member/aqtata 一处功能性修改,比如 bug ( 1 行代码)

一处配置文件修改( 1 行代码)

两处修改是不相干的

要分开提交吗?

背后的问题是大家提交习惯是按照进度一次提交(有点备份的意思),还是按照功能细分提交(日志会很多)?

]]>
问个 Git 基操:怎么样复制一个文件,能保持历史记录? tag:www.v2ex.com,2025-05-23:/t/1133693 2025-05-23T01:13:42Z 2025-05-23T19:38:18Z xiangyuecn member/xiangyuecn git cp:没这号命令😂 git mv:这是改名

比如已有 a.txt ,我现在要个 b.txt 。 如何复制出 b.txt 这个文件,并且复制前的历史和 a.txt 保持一致?

还是说 和空文件夹 一样,git 不在乎你死活?

操作尽量简单,要是涉及的非基础知识点太多,还是算了,这历史不要也罢😂

]]>
Linux 的 Ubuntu 系统有类似 Sourcetree 或者 fork 这种 git 图形化操作的客户端工具吗 tag:www.v2ex.com,2025-05-15:/t/1132091 2025-05-15T18:53:42Z 2025-05-16T05:19:29Z AndrewHenry member/AndrewHenry 关于刚刚 git 的问题描述的不清楚,不能编辑主题了,重新发下问题: git 如何对比服务器上最新的代码和本地的区别? git diff 对比和我预想不一样 tag:www.v2ex.com,2025-05-13:/t/1131531 2025-05-13T12:00:31Z 2025-05-13T20:52:38Z lyvv member/lyvv
*提交的记录可以看这张大图,请大家看了这个大图再评论啊,感谢大家呀



*working 代码已提交如图,位于图片 2 位置 ,图片 1 位置是最新代码

点击 图片 1 位置 ,会对比 1 位置 和 5 位置 的差异
点击 图片 2 位置 ,会对比 2 位置 和 3 位置 的差异

*但是我想要对比 图片 1 位置 和 图片 2 位置 的差异,在 vscode 中无法直接查看对比。

*在前一个帖子里面,下面这个方式不行,提示无差异。不知道对比的是哪 2 个 commit...
git fetch origin
git diff origin/dev dev

*使用 Git Graph 插件也是一样的问题。


*只有下面这个办法可行,和我手动 git clone 一个新目录,结果一致。
git diff 图片 1 位置 commit1 图片 2 位置 commit2

*但是这个办法,操作太麻烦,需要手动复制 commit id ,而且只能在 cmd 里面查看
能否在可视化界面里面查看? ]]>
git 新手求教: git 如何对比服务器上最新的代码和本地的区别?不是本地远端和本地 working。 svn 可以使用 show log,直接对比,调用 beyond compare 很方便。 tag:www.v2ex.com,2025-05-13:/t/1131497 2025-05-13T09:28:39Z 2025-05-13T12:13:53Z lyvv member/lyvv
svn 可以使用 show log ,右键最新的提交,直接对比当前(当前代码可以提交,也可以未提交),调用 beyond compare 查看非常方便。
——————————————————————————————————————————
git 我使用 vscode 或者 TortoiseGit ,均无法实现以上功能。

如图,代码已经 commit 并且 sync 位于 2 ,1 是最新代码
点击 1 ,会对比 1 和 4 (还是 5 ,我不确定)

点击 2 ,会对比 2 和 3 ,

但是我想要对比 1 和 2 ,请问如何操作?

代码我是在 2 台电脑操作的,都是基于一个分支,不知道为什么会出现 merge 操作,都是 vscode 自动完成的。
——————————————————————————————————————————
问题 2:
如果当前电脑的代码未提交并且和服务器更新的文件有冲突,还必须先提交才能 fetch 对比,更加麻烦....


请问各位大佬,如何对比服务器上最新的代码和本地代码?

<img>https://imgur.com/a/ZReZPLn </img>

这个图要怎么才能直接显示 ]]>
对上游提 pr,上游的管理员觉得 pr 里面的功能他不需要或者不满意 tag:www.v2ex.com,2025-04-21:/t/1127076 2025-04-21T09:45:16Z 2025-04-22T08:28:19Z albert0yyyy member/albert0yyyy
我应该维护自己的 fork 分支吗?

但是我后面又不是经常维护,还想享受上游的更新咋整 ]]>
gitee fork 时继承推送规则是否合理? tag:www.v2ex.com,2025-04-13:/t/1125066 2025-04-13T03:07:54Z 2025-04-13T14:09:15Z XIVN1987 member/XIVN1987 在 gitee 上 fork 了一个仓库,过了段时间想合并上游的更新,通过“git remote add upstream”、“git pull upstream master”拉取上游更新、合并、然后再提交、推送到自己 fork 的仓库,,结果报错说有条 commit 的作者邮箱和我的邮箱不一致。。

看了下该条 commit ,是从上游拉取来的,,那作者邮箱肯定是上游的邮箱啊,,怎么可能和我的邮箱一致

然后查了下我 fork 的仓库的设置,发现如下界面:上游的仓库设置了只有作者能提交,我 fork 该仓库的时候会继承该设置,并且无法修改!!

gitee 的 fork 操作为什么要继承推送规则??这是要保护什么吗?还是说就是想实现“设置了只有作者能提交的仓库,别人 fork 后就不能再跟踪上游更新”?

]]>
请教各位关于 Git 合并的问题 tag:www.v2ex.com,2025-03-27:/t/1121586 2025-03-27T10:02:18Z 2025-03-28T10:23:21Z suikaChen member/suikaChen 两个分支后续独立开发迭代,两者的需求代码最多 10%的相似度。
经过半年的开发之后,现在两者相差 200+个 commit ,500+个更改。

现在产品有需求,需要以 A 分支为基底,将 B 分支的所有内容合入,保证最终分支包含 AB 分支的所有更改。
目前想过分版本合并、以 commit 为单位合并、merge 直接合并、rebase 合并,感觉都不太好,没办法保证最终的合并结果。
各位有没有什么比较好的合并方式? ]]>
请教大家一个测试环境代码合并的问题 tag:www.v2ex.com,2025-03-18:/t/1119272 2025-03-18T03:28:27Z 2025-03-18T13:00:48Z j0hnj member/j0hnj 我们服务分为生产环境和测试环境;

我们的开发流程是,研发将自己的开发分支合并到测试分支(第一次合并),上线到 测试环境,准出之后,提交 PR 将 feat 合并到 master 分支(第二次合并),然后上线到生产环境。

问题在于第一次合并是普通的 merge commit (因为开发中需要持续修改、持续合并),第二次合并是 squash merge (为了让主线更清晰)。这样时间长了之后,再从 master 拉开发分支,合并到测试分支的时候很容易冲突,很难解决。需要经常手动用 master 强制覆盖测试分支,强制覆盖就需要所有在测试中的 feature 再次合并到测试分支,比较麻烦。

想了解下这个问题有没有好的解决办法?

]]>
推送远程仓库导致本地提交记录消失,如何找回 tag:www.v2ex.com,2025-03-17:/t/1119177 2025-03-17T15:29:30Z 2025-03-17T17:28:30Z HaibaraDP member/HaibaraDP 代码提交到了本地仓库,使用 github desktop 的 add local repository 添加本地仓库,点击 pulish repository ,设置仓库名以及可见性都没问题,但推送代码发现无法点击,发现分支可以切换(但我本地只有一个分支),切换后推送上去了,此时再打开 vscode ,就发现本地仓库最近一周的提交记录都没了,github 上也没有,怎么找回呢?

]]>
给上游 pr,自己应该先 pr 到自己的 main 分支吗? tag:www.v2ex.com,2025-03-15:/t/1118662 2025-03-15T09:12:16Z 2025-03-15T21:57:09Z albert0yyyy member/albert0yyyy
工程师小明在 main 分支上进行了 A 、B 、C 、D 四次提交。

工程师小红在 A 节点 fork 了项目,并在 sub 子分支上进行开发。

现在小红想将 sub 子分支的代码合并到上游的 main 分支。

她应该先合并到自己 fork 的 main 分支,

还是可以直接将 sub 子分支合并到上游的 main 分支? ]]>
请教一个开发流程中 GIT 解决冲突的问题 tag:www.v2ex.com,2025-03-05:/t/1116014 2025-03-05T03:21:27Z 2025-03-07T00:39:56Z sngxx member/sngxx
一是:直接把 master 合入 feature 解决冲突,再把 feature 合入 master ;
二是:先从 master 拉出分支 master_1 ,把 feature 合入 master_1 解决冲突,再把 master_1 合入 master ;
这 2 种有区别吗,LD 必须让第二种,不理解。 ]]>
求教:在 fork 的仓库上添加不太可能被 upstream 接受的修改,是不是应该在新开的 branch 上开发? tag:www.v2ex.com,2025-02-19:/t/1112498 2025-02-19T01:25:22Z 2025-02-19T04:05:43Z XIVN1987 member/XIVN1987 因为如果直接在 master 上开发的话,,那就没法向 upstream 发起任何 pull request 了。。

是这样吗??

另外,,如果有一个小的修改希望发起 pull request ,,那应该也为这个修改新开一个 branch 吗??

或者说一个 fork 的仓库,,如果有 pull request 的打算,,就永远不要在 master 上修改代码,,master 只用来和 upstream 保持同步。。所有修改都在新的 branch 上做??

感谢各位大佬指教。。

]]>
有哪个 git 的 gui 软件。可以像 idea 的 git 管理那样查看文件历史和代码冲突?现在换到了 cursor,但是这边的代码管理个人用的太不习惯了。 tag:www.v2ex.com,2025-02-17:/t/1112049 2025-02-17T08:02:50Z 2025-02-18T08:58:24Z cander0815 member/cander0815 git clean 还能找回吗 tag:www.v2ex.com,2025-02-14:/t/1111430 2025-02-14T04:06:15Z 2025-02-14T08:38:31Z worldtongfb member/worldtongfb 更新老项目,用的 umijs,突然无法启动

控制台提示

node_modules/@umijs/babel-preset-umi/node_modules/@babel/runtime/helpers/assertThisInitialized.js" does not exist in container. 

删了.umi 目录也不行,然后 github 里维护说

git clean -dfx 再来安装,看起来是版本不匹配导致的

执行完然后发现不光项目启动不起来,文件都没了 😭

最近换成 cursor 开发,寻思 webstorm 的本地文件历史记录可能还有,打开 webstorm 发现.idea 文件夹都删没了,我 gitignore 忽略了都给删了,直接回滚到星期一???

]]>
求助 git 自动 merge 丢代码 tag:www.v2ex.com,2024-12-30:/t/1101348 2024-12-30T09:59:54Z 2025-01-01T04:07:08Z freesun165 member/freesun165 今天遇到个 git 合并丢代码的场景。 featB->featA->master featA 基于 master 开发,featB 基于 featA 开发。featA 合入 master 后,我直接在 featB 分支上 git merge master ,出了问题。 具体如下 featA 对于 file1 加了 line70 ,featB 对 file1 删了 line70 ,在 featB 上 merge master 后,git 自动 merge 的结果是 line70 依然还在

]]>
码云代码自动同步到 github tag:www.v2ex.com,2024-12-30:/t/1101235 2024-12-30T04:49:40Z 2024-12-30T07:40:30Z rexue123 member/rexue123 写了一个小项目,基于 github 的 action 功能,可以定时将码云代码同步到 github 。感兴趣的可以玩玩。 https://github.com/mmclouds/gitee-sync

]]>
请教大家这样的项目应该要怎么做 git 管理 tag:www.v2ex.com,2024-12-27:/t/1100745 2024-12-27T08:11:08Z 2024-12-30T08:42:25Z houshengzi member/houshengzi 前提:手头上准备有一个项目 project 要开发,目前规划是会开发出一个基础版本,然后这版本上线后,基于该版本会按照不同的客户需求有一些差异不大的定制化修改,可能就会出现 project-A 、project-B 甚至是 C/D/E....等多个版本。

团队考虑了两种版本管理方式:

  1. 分支模式。 除了常见的 main/dev/release ,对于定制化的就从 main 拉出对应分支 project-A ... Z ,如果 A 有修改则拉出 feature 进行开发,开发测试完毕合回 project-A 里。 如果 main 有通用更新则按照情况从 main 合到 project-A ... Z ,同理如果 project-A 的一些功能验证过后按需也可以合回到 main 。

  2. fork 模式。 基础版本正常开发迭代,有定制的需要时则从基础版本 fork 出一个 project-A ,它可以方便地随时同步上游仓库的修改,project-A 有被用户验证过后的功能也可以向上游仓库发起 merge 请求合到基础版本中

个人感觉分支模式到时候如果真的出现很多 project-X 分支的时候,有可能分支之间合并就乱了,也会把 git 的记录搞得很花。

另外解决怎么安排测试也是一个大问题

大家对以上两种模式有什么看法或建议? 或者有更合理的管理模式也可以提出供我们参考

]]>
从本地提交代码到 gitlab 后, diff 异常问题,求大佬解惑 tag:www.v2ex.com,2024-12-23:/t/1099554 2024-12-23T02:54:14Z 2024-12-23T07:35:37Z idom member/idom push 到 gitlab 后,三个文件其中两个正常提示,只有我改动的部分
但是有一个文件明明只添加了一行代码,却提示整个文件都被改动了
原来一直没有这个问题,最近总是会莫名奇妙的出现,不知道是不是我前段时间重装了一次 git 的问题
有大佬遇到过或者了解啥问题的吗,求解惑,十分感谢 ]]>
在 Git 中,已知某一个分支的某个 Commit 引入了一个 bug,如何快速确定这个 bug 是经过哪些分支流转到 master 分支的? tag:www.v2ex.com,2024-12-19:/t/1098817 2024-12-19T07:44:17Z 2024-12-17T20:13:23Z liuguangxuan member/liuguangxuan git rebase 那么重要么??? tag:www.v2ex.com,2024-12-07:/t/1095752 2024-12-07T09:46:09Z 2024-12-09T14:33:04Z hanxu317138 member/hanxu317138 用了二周开发了一个需求, 提交了 200 多个 commit, 到主分支的时候. 被告知太不专业了. 为什么不 rebase 一下再上传.

我试着 Rebase 了一下 master, 各种冲突解决的要命, 所以问问大家. 你们合代码看重 rebase 么?

]]>
如何在 git 提交前将生产版本和开发版本的配置进行区分 tag:www.v2ex.com,2024-11-29:/t/1093724 2024-11-29T06:58:45Z 2024-11-30T07:28:07Z timerring member/timerring 配置命名分别是:
我 gitignore 的 config.toml
项目展示的 config-example.toml
源码中有对 toml 的很多引用,导致我每次开发完 push 到 github 的时候都要把我源码中的 config 改为 example 。非常麻烦,想问问大家有没有什么好的解决方法或者插件什么的,能够让我 push 的时候丝滑切换。 ]]>
开源了个新的版本控制系统 HugeSCM,请 V 友们指导 tag:www.v2ex.com,2024-11-28:/t/1093296 2024-11-28T02:13:01Z 2024-11-28T03:00:29Z forcecharlie member/forcecharlie 最近将在公司搞的新的版本控制系统开源了,地址是:https://github.com/antgroup/hugescm,吸收了很多 git 的技术特点,然后在这个基础上重新设计,绕考了 git 的缺点,可以用于 AI/游戏研发等大文件特别多的场景,目前蚂蚁内部的 AI 大模型基本都是由这个管理。

这个系统还不是很完美,希望有更多的人参与进来。

]]>
Git Permission denied 问题求助 tag:www.v2ex.com,2024-11-21:/t/1091552 2024-11-21T08:42:30Z 2024-11-21T08:39:30Z aileaile member/aileaile 问题描述:家里电脑 git pull 项目,提示:Permission deniedssh -T 测试又是正常的,如下图👇

Pic_2024-11-21_162220.png

同样配置和密钥,在公司电脑就可以正常 pullpush ,请问大家可能是哪里的问题?

]]>
因为有两台电脑 我需要一个跨设备的 git stash tag:www.v2ex.com,2024-11-04:/t/1086531 2024-11-04T08:58:17Z 2024-11-19T00:03:35Z jybox member/jybox 之前就记得其实 stash 也是一个特殊的 commit ,可以被 push 到远程仓库,于是写了两个 alias (在 ~/.gitconfig 里):

[alias] wips = !(git stash -u | grep -qv 'No local changes to save' || (echo 'No local changes to save' && false)) && git stash show stash@{0} && (git push origin stash@{0}:refs/stashes/wip || (git stash pop && false)) && git stash drop -q wipl = !git fetch origin refs/stashes/wip && git stash apply FETCH_HEAD && git push -qd origin refs/stashes/wip 

使用时在需要暂存的设备上运行 git wips( Working In Progress Save )

$ git wips 2019/12.bean | 2 -- 2020/01.bean | 2 +- 2024/07.bean | 6 ++-- 2024/08.bean | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2024/09.bean | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2024/10.bean | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2024/11.bean | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ main.bean | 3 ++ 8 files changed, 369 insertions(+), 6 deletions(-) Enumerating objects: 24, done. Counting objects: 100% (24/24), done. Delta compression using up to 12 threads Compressing objects: 100% (15/15), done. Writing objects: 100% (16/16), 3.30 KiB | 3.30 MiB/s, done. Total 16 (delta 10), reused 0 (delta 0), pack-reused 0 (from 0) To infinity:repos/accounting * [new reference] stash@{0} -> refs/stashes/wip 

然后可以在其他配置了同一远程仓库的设备上运行 git wipl( Working In Progress Load )

$ git wipl From infinity:repos/accounting * branch refs/stashes/wip -> FETCH_HEAD On branch master Your branch is up to date with 'origin/master'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: 2019/12.bean modified: 2020/01.bean modified: 2024/07.bean modified: main.bean Untracked files: (use "git add <file>..." to include in what will be committed) 2024/08.bean 2024/09.bean 2024/10.bean 2024/11.bean no changes added to commit (use "git add" and/or "git commit -a") 

过程就是从当前的工作区创建一个 stash ,推到远程一个叫 stashes/wip 的特殊 ref 上,再从另外的设备上拉取并删除。目前版本很简单,一次只能存在一个 stash (重复运行 git wips 会报错),不过基本够我用了。

后续有更新的话会更新在 这里

]]>
推荐一下自己一直在维护的 gcop: git ai copilot,自动化撰写优质的 git commit message、加速 git workflow tag:www.v2ex.com,2024-11-03:/t/1086271 2024-11-03T15:43:18Z 2024-11-04T12:53:40Z Zeeland4v member/Zeeland4v 官网: https://gcop.zeeland.top/

Github: https://github.com/undertone0809/gcop

几个月前,受到一篇推文的启发 https://x.com/mtrainier2020/status/1802941902964277379 ,我突然想到可以借助 git alias 添加一些小命令,加速我的 git workflow 流程,于是我花了两个小时的时间进行工程封装,并发布了 pypi 包,并分享到了 V2EX 上: t/1052254

几个月来,我一直在维护这个框架,gcop 是一个智能的 AI copilot ,旨在帮助开发者撰写更好的 git commit message ,同时加速 git workflow 。

gcop 具有以下优点:

最近在设计一个功能:可以自动将一个大的 code diff 拆分多个 commit ,不知道大家有没有这个需求呢,另外大家要是有其他的建议也欢迎交流。

欢迎大家 star 支持一下!

]]>
请教一下各位有没有这么用版本控制的 tag:www.v2ex.com,2024-10-31:/t/1085191 2024-10-31T02:07:42Z 2024-10-31T17:38:41Z aa514758835 member/aa514758835 比如一个项目有很多文件夹,配置文件,源码等。源码都用的主分支,配置文件根据哪个项目用哪个分支的配置文件。 就想问一下实际真有人这么用吗?

]]>
gitee 上 fork 的仓库无法 push tag:www.v2ex.com,2024-10-29:/t/1084672 2024-10-29T08:47:06Z 2024-10-29T08:48:11Z XIVN1987 member/XIVN1987 在 gitee 上 fork 了一个仓库,修改一些内容后将修改 push 到自己 fork 的仓库中,,但 push 失败,报错:author's is not a valid email, you can only push commits that were committed with your registered email

请问这是什么情况??需要如何修改?

]]>
请教 git 管理的一个问题 tag:www.v2ex.com,2024-10-16:/t/1080703 2024-10-16T02:55:23Z 2024-10-16T10:59:11Z yujianwjj member/yujianwjj 背景:一个代码仓库存在两个版本同时开发的场景,比如当前基于 develop 分支,拉了两个分支 dev_1.0 和 dev_1.1 。现在 dev_1.0 的功能开发完成了,测试也测试了,现网上线了。但是 dev_1.0 的分支没有合并到 develop ,导致 dev_1.1 上线的时候的代码没有包含 dev_1.0 的代码。

一般研发写完代码之后,只要测试不反馈问题,他们也不会去管后续的流程。最开始是组内通知大家,要记得把代码合并到 develop 。但是一个项目有好几个开发人员,靠人去做这件事情确实要花时间,你要跟进这个项目的进度。所以单纯的靠研发去做这件事情,也确实不合理。

现在的问题是,缺一个流程去做这件事情:代码上线之后把代码合并到 develop ,这件事情由谁来做,怎么做?

请教一下大家的公司是怎么做类似的事情的?

]]>
git 合并文件的冲突理解 tag:www.v2ex.com,2024-10-10:/t/1078988 2024-10-10T10:19:12Z 2024-10-10T16:14:49Z BlackSnow member/BlackSnow 请教一下 git 冲突的原理

我的操作

  1. github 上建了一个分支

  2. 在修改好文件后,当前目录 init 了一个仓库

  3. gitub push 之后,报出存在冲突,提示要远程的分支已经有文件( readme

  4. 做了很多尝试,包括合并了冲突到 git pull 至 update branch 无果 最后 git push -f


同事说标准化操作必须是,要本地建文件或者空文件先 clone 或者 pull

这是 git 固定的工作流,还是说是有 SHA-1 的对应关系在里面。总感觉光这点跟 SVN 的差别不大

]]>
推荐自己翻译的《自己动手写 Git》 教程 tag:www.v2ex.com,2024-10-07:/t/1077983 2024-10-07T02:20:55Z 2024-10-07T13:41:11Z yujiehan2002 member/yujiehan2002 本教程将介绍如何使用 Python 从头开始实现简化版 Git ,目的是通过构建一个包含 init 、add 、commit 和 log 等基本命令的基本版本,帮助读者理解 Git 的核心原理。本教程只需了解一些基本的 Git 、Python 和 shell 知识即可学习。

教程地址:http://wyag-zh.hanyujie.xyz/

Github 仓库:https://github.com/hanyujie2002/wyag-zh

20241007101901

目前翻译还有很多需要改进的地方,欢迎提建议或者 pr !

]]>
git fetch 能否用来备份仓库? tag:www.v2ex.com,2024-09-24:/t/1075501 2024-09-24T11:39:30Z 2024-09-24T11:37:30Z 7164447205 member/7164447205 备份仓库有什么好方法?

起初,我用 git bundle 来备份仓库,但是空间消耗太快,我想尽可能节省空间。

后来发现,Gitea 有「镜像仓库」功能。

上游仓库尚在,本地仓库可以同步更新,上游仓库删除,本地仓库也不会随之消失,本地仓库占用的空间永远与上游仓库相近。

不过这项功能有个缺点,仓库作者可以通过强制推送来删除上游仓库的内容,甚至把仓库换成另一个仓库。若上游仓库换成了另一个仓库,本地仓库也会同步上游仓库更改,变成另一个仓库。

无意间发现了 git fetch

执行 git fetch <repo> *:refs/remotes/0924,待命令执行完毕,refs/remotes/0924 下会完整显示上游仓库引用的一切,git checkout 命令也可调出远程仓库的文件。不知道这么做有没有缺点,请大家指点指点

]]>
不得不把私有 git 服务器挂在公网一段时间,用什么方法能提高安全性? tag:www.v2ex.com,2024-09-17:/t/1073442 2024-09-17T03:36:38Z 2024-09-23T21:13:38Z turan12 member/turan12
补充:git 是用的 gitea 搭建 ]]>
如何同时提交到多个存储库,并根据每个存储库设置使用单独的提交用户名 tag:www.v2ex.com,2024-09-04:/t/1070332 2024-09-04T15:46:49Z 2024-09-05T05:34:03Z laters member/laters Windows git https 方式如何实现同时推送到多个仓库,并根据每个仓库设置一个单独的提交用户名

[remote "github"] url = https://github.com/jock/test fetch = +refs/heads/*:refs/remotes/origin/* [remote "gitlab"] url = https://gitlab.com/test fetch = +refs/heads/*:refs/remotes/origin/*| 

我如何能为 github gitlab 分别设置对应的提交用户名

github:github-username gitlab: gilab-username 
]]>
smartGit 图形工作树里向下的箭头是什么意思 tag:www.v2ex.com,2024-09-03:/t/1069814 2024-09-03T02:11:16Z 2024-09-03T02:50:26Z jimor member/jimor 2 、然后这个项目我也有个需求要做,于是我从 dev 拉了 feature
3 、同事 a 就打算复用 master ,就把 dev 直接合到 master
4 、最后我需要上线了,按之前的流程我得把 master 分支 rebase 到我的 feature ,但跨度这么大直接放弃了
5 、急着上线我就选择 merge 到 master ,也提前准备了备份分支,合并过去看用 sourcetree 和在线仓库检查 commit 都正常
6 、结果突然被组长发现了,他是用 smartGit ,说看到工作流乱成麻很不爽,这箭头我确实没看到,看了下 smartGit 的文档也不知所以
7 、点击下箭头会跳到 22 年的 commit 位置,然后点击向上箭头就回到现在,我感觉只是个提示,组长觉得是 24 年的 commit 插到了 22 年
https://imgur.com/a/i74XXnz ]]>
git 如何只将某个子文件夹的修改应用到另一条分支? tag:www.v2ex.com,2024-09-02:/t/1069487 2024-09-02T01:30:27Z 2024-09-02T03:23:32Z Kaleidopink member/Kaleidopink 假设有 topic 分支和 main 分支, topic 分支由 main 分支创建而来, 而后 main 分支一直没有动过. 现在在 topic 分支上做了许多修改, 但是只需要将某个子文件夹的修改应用到 main 分支. 可以保证对该子文件夹的修改都是单独的 commit.

]]>
今天终于发现,之前对 git+ssh 协议的认知是错误的 tag:www.v2ex.com,2024-08-18:/t/1065857 2024-08-18T04:51:11Z 2024-08-18T05:51:11Z julyclyde member/julyclyde 我一直很好奇,为啥 dumb HTTP 协议需要挂一个 post update hook 去执行 update-server-info 命令,而 git+ssh 协议却不需要

后来才明白,我之前误把 git+ssh 理解为 file+ssh 协议了

今天使用 export GIT_SSH_COMMAND="ssh -vvv" 的方法,给 ssh 开了 verbose 模式 debug1: Sending command: git-upload-pack 'git/git.git' debug2: mux_master_process_new_session: channel 1: request tty 0, X 0, agent 0, subsys 0, term "xterm-256color", cmd "git-upload-pack 'git/git.git'", env 4 从日志可以看出,其实 git+ssh 协议是通过 ssh 调用远端的 git 内部命令来提供服务的,而不是通过 ssh 访问远程文件系统来提供服务的

这个做法其实和 smart HTTP 类似: git+ssh 协议:ssh 作为网络层和身份验证层,ssh session channel 作为适配层,git 内部命令作为实际的 git 协议服务器 smart HTTP 协议: httpd 作为网络层和身份验证层、CGI 模式执行的 git-http-backend 作为适配层、git 内部命令作为实际的 git 协议服务器

而 dumb HTTP 协议,因为是 httpd 直接服务静态文件的,没有调用 git 的内部命令提供服务,所以才缺了 update-server-info 这个步骤,需要通过 hook 来执行该命令。

不过 post update hook 和 git send-pack 之间的互动我没看明白,不知道 update-server-info 命令到底输出了什么内容给 git send-pack 命令,让它上传文件到 dumb HTTP 服务去 这段代码应该怎么读呢?

]]>
tar -czvf git_backup.tgz /project/.git 是备份单机不联网 git repo 的正确做法吗? tag:www.v2ex.com,2024-08-18:/t/1065843 2024-08-18T03:25:48Z 2024-08-18T04:26:57Z drymonfidelia member/drymonfidelia 第三方 Git 托管平台的选择 tag:www.v2ex.com,2024-08-12:/t/1064302 2024-08-12T03:37:53Z 2024-09-24T07:17:28Z happycodinglife member/happycodinglife 主要用来存放 3D 相关的工程文件,例如游戏之类的,偶尔会有两三个人的协作需求。

之前一直使用 Github ,也续费了一段时间每月$5 的存储包,后来发现腾讯的 Coding 直接免费给 10G 空间,就转移到 Coding 了,但是逐渐也不够了,腾讯 Coding 主要面对企业客户的,个人续费太贵了。

大家有没有其他推荐的平台?尽量空间大、续费便宜,海外平台也可以。

自己没有服务器,不太熟悉服务端的东西,对于单台服务器文件安全性也不太信任,所以尽量不想折腾自己搭建,偶尔还有异地访问需求。

]]>
求问 git 流程设计问题 tag:www.v2ex.com,2024-08-08:/t/1063456 2024-08-08T03:46:00Z 2024-08-08T08:36:20Z levelworm member/levelworm 我们组是做数据工程的,git 流程总是有问题。请教一下怎么设计比较好?

因为数据工程经常需要迅速、改动小的变动,所以我们没有 tag 和 release branch 。每次做开发的流程都是这样:

  1. 从 main 创建 feature branch
  2. feature branch 开发结束之后 merge 到 preprd
  3. 测试结束之后,preprd merge 到 main

目前我们很少有冲突,这点还蛮好的,因为项目划分的还可以,极少碰到两个人修改一个文件的问题。但是很难解决preprdmain同步的问题,所以经常出现不知道为什么preprd merge 到 main的时候,会把很早的 commit 也合并进去的问题。当然这并不是致命的问题,所以团队很久都没有解决,我也是最近加入才发现这个问题的。我猜测是因为有些同事直接把 feature 分支 merge 到 main 导致的,但是我也不是 git 专家,所以也不确定。另外我们从来不用 rebase ,只能用 merge ,我觉得也不是很好,但是说不出来为什么不好。

最近我们加了一步,就是 2 和 3 之间让main 反向 merge 到 preprd。这似乎解决了问题,但是我又觉得十分的丑陋。不知道大家有没有什么好的设计方案?或者说,我究竟应该怎么排查问题?我翻了下 gitbook ,感觉里头介绍的十分详尽,反而搞不清楚应该如何排查了。

多谢!

]]>
各位大佬你们团队开发 git 是如何管理的? tag:www.v2ex.com,2024-08-08:/t/1063393 2024-08-08T01:51:20Z 2024-08-08T22:10:32Z liuchengfeng1 member/liuchengfeng1 最好是 10 个人以上的技术团队,你们面对 版本协作开发、版本上线顺序前后不一致、开发途中穿插需求或是解决 bug 、如何减少代码冲突等等,是怎么处理的呢?有什么比较好的 git 管理方法

目前我们是这样:

从 prod 单独拉一个 release 分支,然后 4 、5 个人在这个分支上开发,按功能区分模块,完成后让某个人合到 dev 、test

但是有个问题,开发的人一多,这样特别容易造成代码冲突

image.png

]]>
ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86