V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yiyi11
V2EX  ›  程序员

感觉 idea 的 git-changelist 很好用

  •  2
     
  •   yiyi11 · 2019-02-19 10:26:17 +08:00 · 8112 次点击
    这是一个创建于 2104 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如图,本地开发需要修改配置文件的选项,但是不能提交更改,用 idea 的 changelist 功能分组就能避免误提交。svn 也是有这样好用的功能。想问一下其他 git 可视化工具或者 git 命令是否也有这样的功能?。 https://ws2.sinaimg.cn/large/007em91Jgy1g0bil77alsj309f04ddfy.jpg

    16 条回复    2019-02-21 00:18:13 +08:00
    yiyi11
        1
    yiyi11  
    OP
       2019-02-19 10:29:55 +08:00   ❤️ 1
    目前还有个方法是使用命令 git update-index --assume-unchanged 文件名,忽略文件的改动,但是不加入.gitignore 文件中(重点,因为还是有需要修改该文件的时候)。
    jimxu16
        2
    jimxu16  
       2019-02-19 10:52:56 +08:00
    不错 学到了
    psuwgipgf
        3
    psuwgipgf  
       2019-02-19 10:55:06 +08:00
    @yiyi11 正好需要,idea 的 .idea 经常改动,都不知道改了什么
    yiyi11
        4
    yiyi11  
    OP
       2019-02-19 11:07:36 +08:00
    @psuwgipgf #3 .idea 文件夹要加入.gitignore 文件中的啊,开发不应该关心这个文件夹的改动。
    yiyi11
        5
    yiyi11  
    OP
       2019-02-19 11:14:58 +08:00
    @yiyi11 #1 补充 1L 的命令说明:
    命令:git update-index --assume-unchanged 文件名,作用:忽略文件的改动,但是不加入.gitignore 文件中,这样可以达到仅在本地目录中忽略,不影响其他团队成员的工作。
    命令:git update-index --no-assume-unchanged 文件名,作用:上一个命令的逆操作,重新追踪文件改动。
    便捷用法,编写 shell 脚本,
    disable_track.sh 内容:
    #!/bin/bash
    git update-index --assume-unchanged 文件名
    disable_track.sh 放在项目的.git/hooks 文件夹中(如果需要把脚本加入版本管理分享可以放在别的目录),然后打开 git bash 命令行,执行$ ./.git/hooks/disable_track.sh 即可。
    同理建立 enable_track.sh
    #!/bin/bash
    git update-index --no-assume-unchanged 文件名
    做逆向操作。
    chdahuzi
        6
    chdahuzi  
       2019-02-19 11:24:45 +08:00
    请教下 idea 的 changelist,按什么来分的组?

    另外,TortoiseGit 是有 assume-unchanged 功能的
    windedge
        7
    windedge  
       2019-02-19 11:33:41 +08:00   ❤️ 1
    GM
        8
    GM  
       2019-02-19 11:52:23 +08:00
    @yiyi11 .idea 目录里有存放代码格式规则配置文件,这个我觉得可以存进 git 库里
    limbo0
        9
    limbo0  
       2019-02-19 13:45:30 +08:00
    brew install tig

    tig

    一直在用
    icylogic
        10
    icylogic  
       2019-02-19 13:49:45 +08:00 via iPhone
    这种文件我一般是用一个 .template ( tracked )+ .local ( ignored )解决,需要提交的公共更改在 template 里体现,本地自用的就用 local_config 来覆盖。这也是很多 linux 程序配置文件的思路。

    因为你没办法让所有人都用这种工具,别人一不小心提交了这种文件就很头疼。
    yiyi11
        11
    yiyi11  
    OP
       2019-02-19 13:52:48 +08:00
    @GM #8 这个倒没有仔细研究,因为 spirngboot 脚手架生成初始项目的时候,有个.gitignore 文件,把各个 ide 工具的配置文件都加入了忽略列表,应该是表明团队成员可以使用不同的 ide 工具。
    icylogic
        12
    icylogic  
       2019-02-19 13:54:10 +08:00 via iPhone
    而且比如 a 改了 config["foo"] = bar1,b 改了 config["foo"] = bar2,然后觉得这个更改需要提交上去,这时候 a 再往下拉的时候,还得先 merge 了,再改回 bar1。如果分离开,就既不会影响别人,也不会被别人影响。
    yiyi11
        13
    yiyi11  
    OP
       2019-02-19 13:57:27 +08:00
    @icylogic #10 你的意思是加载配置文件的时候添加规则,比如检测是否有.local 文件,如果没有则加载.template 文件吗?现在就是偶尔有这样的问题,团队有成员对配置文件做了本地更改,然后不小心提交了。
    yiyi11
        14
    yiyi11  
    OP
       2019-02-19 14:01:18 +08:00
    @chdahuzi #6 idea 的 changelist 分组是自定义的,文件改动首次出现默认在 default changelist,你对该文件右键,会弹出一个菜单,选择“ move to another changelist ”,即可创建新的 changelist 或者分到现有的 changelist。
    zjp
        15
    zjp  
       2019-02-19 14:10:55 +08:00
    对于需要修改但不能提交的配置文件,之前折腾了会,也是用楼主说的两种方式。切换分支的话还是会很蛋疼...软件 /框架支持配置文件优先级的话还是新建文件去覆盖好一些
    SoloCompany
        16
    SoloCompany  
       2019-02-21 00:18:13 +08:00 via iPad
    idea 的 task 以及 changelist 和 git 没半毛钱关系啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2770 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 12:48 · PVG 20:48 · LAX 04:48 · JFK 07:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.