以下文章适用于Git的过时版本(版本1.7.1-Centos 6的默认版本),该版本可以追溯到2010年。显而易见的答案是简单地升级git(我赞成此课程) (行动))我刚刚加入了这个项目,团队负责人担心稳定性。我怀疑Git 1.7.1已被严重破坏,并希望进行升级。
我刚刚对我刚刚加入的项目进行了一次提交,但是很惊讶地发现git log在我(SA)最近提交( )之前插入了我的更改- TortoiseGit将其他人(MH)做出的更改归因于我的其他复杂情况。
* SA committed 3d67c9dd4 on Mon Feb 18 12:42:24 2019 +0000 ## SECOND COMMIT
* SA committed d6f0c4712 on Mon Feb 18 10:55:42 2019 +0000 ## FIRST PUSH (2 mins after FIRST COMMIT)
|\
| * MH committed c1ad3c336 on Thu Feb 14 17:07:01 2019 +0000
| * MH committed 7442f95dd on Thu Feb 14 15:03:46 2019 +0000
| * MH committed 417dc55e2 on Thu Feb 14 11:28:40 2019 +0000
| * MH committed 0eea851b1 on Thu Feb 14 11:27:01 2019 +0000
| * MH committed 72e0fa612 on Wed Feb 13 17:15:22 2019 +0000
| * MH committed 0e80cc9d6 on Wed Feb 13 17:06:50 2019 +0000
| * MH committed ac37fdf64 on Wed Feb 13 17:04:46 2019 +0000
| * MH committed cb1b84489 on Wed Feb 13 17:04:18 2019 +0000
| * MH committed f5026eee5 on Wed Feb 13 15:03:50 2019 +0000
| * MH committed 1ca37588f on Wed Feb 13 15:01:55 2019 +0000
| * MH committed cedcefd36 on Wed Feb 13 12:23:03 2019 +0000
| * MH committed 0bbd26524 on Wed Feb 13 08:39:33 2019 +0000
| * MH committed db8b7672c on Thu Feb 7 17:41:56 2019 +0000
| |\
| | * MH committed fca13dfe3 on Thu Feb 7 17:36:05 2019 +0000
| | * MH committed 704e2f3ff on Thu Feb 7 17:35:30 2019 +0000
| * | MH committed 1b34e745c on Thu Feb 7 17:41:20 2019 +0000 #### out of place
| |/
| * MH committed f77456930 on Wed Feb 6 11:43:29 2019 +0000
| * MH committed eb9849449 on Tue Feb 5 17:52:17 2019 +0000
| * MH committed 889f94b00 on Tue Feb 5 15:45:19 2019 +0000
| * MH committed ae4505a10 on Tue Feb 5 13:47:42 2019 +0000
| * MH committed 561c703b6 on Tue Feb 5 13:47:07 2019 +0000
| * MH committed 43b4941f8 on Tue Feb 5 13:45:01 2019 +0000
* | SA committed 2336ac0c7 on Mon Feb 18 10:53:49 2019 +0000 ## FIRST COMMIT -- sandwiched BETWEEN earlier commits!!!
|/
* MH committed 87fcf83a2 on Mon Feb 4 11:25:38 2019 +0000
* MH committed ea096edd3 on Fri Feb 1 17:12:01 2019 +0000
* MH committed c51cd83d3 on Fri Feb 1 10:27:52 2019 +0000
结果:
const routes: Routes = [
{
path: 'settings', canActivateChild: [AuthGuard],
children: [
{ path: 'manage-labels', component: ManageLabelsComponent, data: { title: 'Manage Labels' } },
{ path: 'profile-settings', component: ProfileSettingsComponent, data: { title: 'Profile Settings' } },
{ path: '', component: SettingsComponent, data: { title: 'Settings' } }
]
},
{ path: '', component: HomeComponent, canActivate: [AuthGuard], data: { title: 'Home' }, pathMatch: 'full' },
{ path: 'about', component: AboutComponent, data: { title: 'About Us' } },
{ path: 'login', component: LoginComponent, data: { title: 'Login' } },
{ path: '**', component: NotFoundComponent, data: { title: 'Page Not Found' } }
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule],
providers: [AuthService, AuthGuard]
})
这是git 1.7.1的已知问题吗?
更新:我刚刚注意到MH所做的提交也不合适,而且树中的分支看起来完全是个谜。所有更改都在同一分支上进行。
更新2 貌似归因于我的混乱提交(由TortoiseGit在d6f0c4712上提供)实际上是“与父项1的差异”(无论如何)。我的实际提交在以下 way 中列为“与父级2的差异”。
答案 0 :(得分:1)
TL; DR
git log --date-order
或
git log --date-order --graph --oneline --decorate --pretty=format:"%cn committed %h on %cd"
详细信息
我能够在具有Git 1.7.1的CentOS 6机器上重现您的方案。 (我们也有更新的Git,但仍然有1.7.1版本。)
在进行合并提交时,Git(新旧)似乎将合并的分支视为“最近的”,如果您这样考虑,这是有道理的:我在分支上进行了更改,然后我合并了别人的更改,所以这是最后发生的事情。
简单的解决方案是向--date-order
提供git log
。
日期顺序:
$ git log --date-order --graph --oneline --decorate --pretty=format:"%cn committed %h on %cd"
* j committed c767018 on Tue Feb 19 06:40:26 2019 -0500
|\
* | j committed f0fe88c on Tue Feb 19 06:40:10 2019 -0500
| * j committed 29b783b on Tue Feb 19 06:39:55 2019 -0500
|/
* j committed c592f81 on Tue Feb 19 06:34:38 2019 -0500
没有日期顺序:
$ git log --graph --oneline --decorate --pretty=format:"%cn committed %h on %cd"
* j committed c767018 on Tue Feb 19 06:40:26 2019 -0500
|\
| * j committed 29b783b on Tue Feb 19 06:39:55 2019 -0500
* | j committed f0fe88c on Tue Feb 19 06:40:10 2019 -0500
|/
* j committed c592f81 on Tue Feb 19 06:34:38 2019 -0500
有关所有合并气泡的注释
在我的工作流程中,我不希望看到历史记录中的所有合并气泡。当我合并一个功能分支或一个错误分支时,我希望将其视为合并,但是当它只是在master
上进行更改而尚未推送时,我会尽量避免这样做。在“更新”下的注释表明您也不喜欢它,所以这是我的看法。
当您执行git pull
并且有尚未提交的本地提交时,默认情况下,Git(旧的和新的)会将远程更改合并到您的本地分支中,从而像我在上面创建的那样创建气泡您的历史记录显示出来。
为避免这些情况,请改用git pull --rebase
。
我首选的工作流程:使用git fetch
,然后通过向origin
命令中添加--all
,然后再git log
,检查本地分支和git rebase origin
之间的区别。当您满意时可以这样做。
git fetch
git log --all --date-order --graph --oneline --decorate ...
或
git log master origin/master --date-order --graph --online --decorate ...
然后
git rebase origin
适用于重新定级的通常警告:避免重新定级您之前推送的任何内容。对于仅存在于沙箱中的本地提交,这是一个好主意。