git rebase - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
thomaswang
V2EX    git

git rebase

  •  
  •   thomaswang 2017-05-25 22:06:11 +08:00 4890 次点击
    这是一个创建于 3068 天前的主题,其中的信息可能已经有所发展或是发生改变。
    git checkout master
    git rebase myBranch
    git push

    如果同事这样做,别人一看 master,就以为我违规操作,直接把代码直接提交到 master,怎么把问题说清楚呢?,
    25 条回复    2017-05-27 01:25:44 +08:00
    billlee
        1
    billlee  
       2017-05-25 22:29:47 +08:00
    你把 master rebase 到你的分支上?然后还能不加 --force push?

    这是什么操作。。
    shalk
        2
    shalk  
       2017-05-25 23:32:01 +08:00 via iPhone
    master 开保护 禁止直接 push
    gouchaoer
        3
    gouchaoer  
       2017-05-25 23:34:09 +08:00 via Android
    用 sourcetree,命令行太难了不会
    skyshy
        4
    skyshy  
       2017-05-25 23:35:50 +08:00
    git reflog 可以查看呀
    momocraft
        5
    momocraft  
       2017-05-25 23:48:50 +08:00
    rebase 出的 commit 中的 author (你) 和 commiter (你那个勇敢的同事) 会变成不同人

    如果还要再强的证明, 你可以给自己的 commit 加上数字签名
    111111111111
        6
    111111111111  
       2017-05-25 23:57:27 +08:00 via Android
    给 master 分支保护,合并的时候提 MR ,这样大家就知道你的代码不是直接改 master 是合并上去的了
    另外仓库分远程和本地,只要提交到远程的是 commit 干净清晰,本地可以按照自己风格来
    111111111111
        7
    111111111111  
       2017-05-26 00:03:02 +08:00 via Android
    虽然审错题了,不过给 master 加保护没错,这样向 master 合并代码不是在客户端本地,而是用账号登录到远程仓库,
    足以证明虽然 commit 是你写的,但却是别人是把 commit 合到 master 了
    scnace
        8
    scnace  
       2017-05-26 01:51:23 +08:00 via Android
    所以一人一个 branch 有什么好处吗?
    msg7086
        9
    msg7086  
       2017-05-26 05:17:47 +08:00
    别人一看 master,Committer 是你同事啊,关你啥事……
    billgreen1
        10
    billgreen1  
       2017-05-26 07:29:33 +08:00
    虽然我也不是很懂,但是我见过的例子都是
    git checkout mybranch
    git rebase master
    在自己的分支上解决可能的冲突,然后
    git checkout master
    git merge mybranch
    thomaswang
        11
    thomaswang  
    OP
       2017-05-26 08:04:17 +08:00 via iPhone
    @msg7086 出现在 master 上的所有我的 commit 的 commiter 都是那个勇敢的人 对吗? 我还在地铁上、到公司就看一下
    owt5008137
        12
    owt5008137  
       2017-05-26 08:04:47 +08:00 via Android
    这种 push 得加--force 吧?而且冲突的文件的最后提交者是你同事又不是你,为什么会认为你违规操作?难道发现你是最后提交者就自动背锅了?
    thomaswang
        13
    thomaswang  
    OP
       2017-05-26 08:11:41 +08:00 via iPhone
    @billgreen1 我大致理解这样操作的意思,这样 master 上的 commit 会在没有 merge 的情况下出现在你的分支(这个不违规,我们这是反过来操作的,属于违规),当你的 commit 出现在 master 是在合并到 master 之后出现的,我们这情况是在没有任何 merge 的情况,我的 commit 出现在 master
    lululau
        14
    lululau  
       2017-05-26 09:47:37 +08:00
    不要把私钥或 github/gitlab 密码告诉别人就可以了
    PythoneerDev6
        15
    PythoneerDev6  
       2017-05-26 10:09:21 +08:00
    这样做 是直接把你的分支 merge 到了 Master 吧。 如果是这样的话, 提交者会是你同事,不是你。
    bombless
        16
    bombless  
       2017-05-26 10:19:43 +08:00 via Android
    master 不止你一个人看到,你还给它 rebase,会造成一种情况就是同一个提交会有不同的几个 hash,查历史的时候会造成一点混乱,个人不推荐
    yanhejihe
        17
    yanhejihe  
       2017-05-26 11:13:13 +08:00
    master 分支上怎么可以 rebase
    yanhejihe
        18
    yanhejihe  
       2017-05-26 11:13:40 +08:00
    只有在自己的分支上 rebase,然后 push
    gesse
        19
    gesse  
       2017-05-26 11:15:45 +08:00
    fgwww
        20
    fgwww  
       2017-05-26 11:16:13 +08:00 via iPhone
    永远不要在公共分支上变基
    thomaswang
        21
    thomaswang  
    OP
       2017-05-26 12:31:06 +08:00
    @yanhejihe 对的,是不合理,如果在 aBranch 上,git rebase bBranch , 并且 bBranch 上的提交都先于 aBranch 上的提交,有什么方法可以判断一个 commit,在 rebase 之前,是在 aBranch 还是在 bBranch 上提交的吗
    thomaswang
        22
    thomaswang  
    OP
       2017-05-26 12:32:19 +08:00
    @msg7086 我 commit 的时候,author 和 commiter 的信息都是我,别人 rebase 之后,这两个信息没有变动啊
    wpzero
        23
    wpzero  
       2017-05-26 18:09:39 +08:00
    这样,应该不好吧,这个意思是 master 在你的分支之上了,算是 merge ?而且 commit 进去的顺序也不对吧,比如 master 现在指向一个 A_commit 你的分支指向 B_commit 那么你这样操作完之后 A_commit 在你的 B_commit 之上了是不是。感觉应该 git pull --rebase; git rebase master myBranch 然后再提交一个 pr, ok 了, 那么 git checkout master; git pull --rebase 然后 git merge myBranch; 然后 git push origin -u HEAD:refs/heads/master;
    Reficul
        24
    Reficul  
       2017-05-26 19:39:31 +08:00
    Github 的话你的 commit 加上 GPG 签名,开 master 分支保护。
    msg7086
        25
    msg7086  
       2017-05-27 01:25:44 +08:00
    @thomaswang 我这里没问题。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2560 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 04:03 PVG 12:03 LAX 21:03 JFK 00:03
    Do have faith in what you're doing.
    ubao msn 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